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就可以避免被锁定了
相关推荐
爬台阶的蚂蚁22 分钟前
Spring AI Alibaba基础概念
java·spring·ai
计算机学姐31 分钟前
基于SpringBoot的演唱会抢票系统
java·spring boot·后端·spring·tomcat·intellij-idea·推荐算法
多多*4 小时前
图解Redis的分布式锁的历程 从单机到集群
java·开发语言·javascript·vue.js·spring·tomcat·maven
a程序小傲4 小时前
国家电网面试被问:FactoryBean与BeanFactory的区别和动态代理生成
java·linux·服务器·spring boot·spring·面试·职场和发展
若鱼19195 小时前
SpringBoot4.0新特性-Resilience之失败重试
java·spring
哪里不会点哪里.5 小时前
Spring 核心原理解析:它到底解决了什么问题?
java·后端·spring
梵高的代码色盘6 小时前
互联网大厂Java求职面试实录与技术深度解析
java·spring·缓存·微服务·面试·互联网大厂·技术深度
L1624768 小时前
Nginx+Tomcat+Redis(单节点 / 3 节点集群)+Redisson 共享 Session 完整整合手册
redis·nginx·tomcat
短剑重铸之日8 小时前
《SpringCloud实用版》完整技术选型地图
java·后端·spring·spring cloud
拽着尾巴的鱼儿9 小时前
Spring定时任务 Scheduled使用
java·后端·spring