日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

SpringSecurity 用戶帳號已被鎖定

作者:宣布無人罪 更新時間: 2023-12-17 編程語言

SpringSecurity 用戶帳號已被鎖定

01 異常發生場景

  • 當我自定義登錄接口時
  • 以下是我的UserDetailsService和UserDetails接口的實現類
@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;
    }
}
@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就可以避免被鎖定了

原文鏈接:https://blog.csdn.net/2302_77182979/article/details/134732491

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新