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就可以避免被锁定了
相关推荐
wxwx_bscxy3225 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
cfm_29147 小时前
Spring事务
数据库·spring·oracle
NeverFear79210 小时前
【黑马点评】短信登录
java·redis·tomcat·intellij-idea
跨境数据猎手11 小时前
京东开放平台商品详情接口(jd.item_get):签名、缓存与批量采集
java·spring·缓存
霸道流氓气质12 小时前
Spring AI提示词模板与动态变量替换
java·python·spring
Whyn13 小时前
Servlet 学习笔记
spring
ofoxcoding13 小时前
Claude Fable 5.1 API 接入指南:模型标识、五级定价策略、effort 参数与缓存 TTL 配置详解
java·spring·缓存·ai
摇滚侠14 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 Spring Framework 的事务管理 阅读笔记 34
spring boot·笔记·spring
霸道流氓气质18 小时前
Spring AI异常处理与重试机制
java·人工智能·spring
小江的记录本1 天前
【CSS】CSS 动画:transition、animation、transform、CSS3 新特性(附《思维导图》)
前端·css·安全·spring·前端框架·css3·动画