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就可以避免被锁定了
相关推荐
JAVA面经实录9172 分钟前
Spring Boot + Spring AI 一体化实战全文档
java·人工智能·spring boot·spring
希望永不加班7 分钟前
SpringBoot 接口签名验证(AppKey/Secret)
java·spring boot·后端·spring
SuperherRo1 小时前
服务攻防-中间件安全&Apache&Tomcat&Jetty&Weblogic&AJP协议&反序列化&CVE漏洞
中间件·tomcat·apache·jetty·weblogic
曹牧2 小时前
Spring:@RequestMapping 注解匹配顺序
java·后端·spring
云烟成雨TD2 小时前
Spring AI Alibaba 1.x 系列【44】多智能体 - 混合模式、监督者(SupervisorAgent)、自定义模式
java·人工智能·spring
MaxCode-12 小时前
Chapter 9:企业实战案例与架构沉淀
人工智能·spring·架构
TE-茶叶蛋2 小时前
Spring自动配置分析
java·后端·spring
JAVA面经实录9172 小时前
Spring Boot + Spring AI 完整实战手册
人工智能·spring boot·spring·ai编程
架构源启3 小时前
2026 进阶篇:Spring Boot响应式编程 + Spring AI 1.1.4 流式实战 + Vue前端完整实现(避坑指南)
java·前端·vue.js·人工智能·spring boot·spring·ai编程
南部余额4 小时前
Spring Cloud LoadBalancer 详解:客户端负载均衡的原理与实践
spring·spring cloud·负载均衡·微服务架构·轮询算法·loadbanlancer