SpringSecurity 用户帐号已被锁定

SpringSecurity 用户帐号已被锁定

01 异常发生场景

  • 当我自定义登录接口时
  • 以下是我的UserDetailsService和UserDetails接口的实现类
java 复制代码
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
    @Autowired
    private MsUserServiceImp msUserServiceImp;

    @Override
    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;
    }
}
java 复制代码
@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;
    }
}

02 问题发生的原因

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

1.isAccountNonExpired()

  • 判断帐户是否过期

2.isAccountNonLocked()

  • 判断帐户是否锁定

3.isCredentialsNonExpired()

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

4.isEnabled()

  • 是否启动

03 解决方式

  • 将UserDetails接口的实现类里上述方法,也就是所有方法设置为true就可以避免被锁定了
相关推荐
好奇的菜鸟8 分钟前
MyBatis-Plus 中 QueryWrapper 的 Limit 实现
java·tomcat·mybatis
王蛋11139 分钟前
后端环境配置
java·spring·maven
Code哈哈笑1 小时前
【基于SpringBoot的图书购买系统】深度讲解 分页查询用户信息,分析前后端交互的原理
java·数据库·spring boot·后端·spring·交互
weixin_429326092 小时前
Spring MVC-面试题(33)
java·spring·mvc
为美好的生活献上中指2 小时前
java每日精进 5.20【MyBatis 联表&分页查询】
java·tomcat·mybatis·mpj
冰^3 小时前
HTTP 与 HTTPS 深度解析:原理、实践与大型项目应用
java·spring boot·网络协议·spring·http·https·maven
Auc244 小时前
Neo4j入门第二期(Spring Data Neo4j的使用)
java·spring·neo4j
caihuayuan44 小时前
Java设计模式: 工厂模式与策略模式
java·大数据·sql·spring·课程设计
薯条不要番茄酱7 小时前
【SpringBoot】从零开始全面解析Spring Ioc&DI (一)
spring boot·后端·spring
Your易元9 小时前
设计模式-备忘录模式
java·开发语言·spring·设计模式