开发者

SpringSecurity 用户帐号已被锁定的问题及解决方法

目录
  • SpringSecurity 用户帐号已被锁定
    • 01 异常发生场景
    • 02 问题发生的原因
    • 03 解决方式

SpringSecurity 用户帐号已被锁定

01 异常发生场景

  • 当我自定义登录接口时
  • 以下是我的UserDetailsService和UserDetails接口的实现类
@Service
public clasjavascripts UserDetailsServiceImpl implements UserDetailsService {
    @Autowired
    private MsUserServiceImp msUserServiceImp;
    @Overrideandroid
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //使用myBATis-plus,获取到账号密码数据
        LambdaQueryWrapper<MsUser> qw=new LambdaQueryWrapper<>();
        qw.eq(MsUser::getUsername,username);
        MsUser user = msUserServiceImp.getOne(qw);
        LoginUser loginUser = new LoginUser();
    编程客栈    loginUser.setMsUser(user);
        return loginUser;
    }
}
@Data
@NoArgsConstructor
@AllArgsConstructor
编程客栈public class LoginUser implements UserDetails {
    private MsUser msUser;
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }
    @Override
    public String getPassword() {
        return msUser.getPassword();
    }
    @Override
    public String getUsername() {
        return msUser.getUsername();
    }
    @Override
    public boolean isAccountNonExpired() {
        return false;
    }
    @Override
    public boolean isAccountNonLocked() {
        return false;
    }
    @Override
    public boolean isCredentialsNonExpired() {
        return false;
    }
    @Override
    public boolean isEnabled() {
        return false;
    }
}

SpringSecurity 用户帐号已被锁定的问题及解决方法

02 问题发生的原因

重写的UserDetails类默认方法返回值为false

  • 1.isAccountNonExpirepythond()

判断帐户是否过期

  • 2.isAccountNonLocked()

判断帐户是否锁定

  • 3.isCredentialsNonExpired()

凭据是否过期,就是登录时间到没到

  • 4.isEnabled()

是否启动

03 解决方式

将UserDetails接口的实现类里上述方法,也就是所有方法设置为true就可以避免被锁定了

到此这篇关于SpringSecurity 用户帐号已被锁定的文章就介绍到这了,更多相关SpringSecurity 帐号锁定内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜