SpringSecurity?用戶帳號(hào)已被鎖定的問(wèn)題及解決方法
SpringSecurity 用戶帳號(hào)已被鎖定
01 異常發(fā)生場(chǎng)景
- 當(dāng)我自定義登錄接口時(shí)
- 以下是我的UserDetailsService和UserDetails接口的實(shí)現(xiàn)類
@Service public class UserDetailsServiceImpl implements UserDetailsService { @Autowired private MsUserServiceImp msUserServiceImp; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { //使用mybatis-plus,獲取到賬號(hào)密碼數(shù)據(jù) 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 問(wèn)題發(fā)生的原因
重寫的UserDetails類默認(rèn)方法返回值為false
- 1.isAccountNonExpired()
判斷帳戶是否過(guò)期
- 2.isAccountNonLocked()
判斷帳戶是否鎖定
- 3.isCredentialsNonExpired()
憑據(jù)是否過(guò)期,就是登錄時(shí)間到?jīng)]到
- 4.isEnabled()
是否啟動(dòng)
03 解決方式
將UserDetails接口的實(shí)現(xiàn)類里上述方法,也就是所有方法設(shè)置為true就可以避免被鎖定了
到此這篇關(guān)于SpringSecurity 用戶帳號(hào)已被鎖定的文章就介紹到這了,更多相關(guān)SpringSecurity 帳號(hào)鎖定內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Java阻塞隊(duì)列(BlockingQueue)的實(shí)現(xiàn)原理
這篇文章主要介紹了詳解Java阻塞隊(duì)列(BlockingQueue)的實(shí)現(xiàn)原理,阻塞隊(duì)列是Java util.concurrent包下重要的數(shù)據(jù)結(jié)構(gòu),有興趣的可以了解一下2017-06-06Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(2)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-07-07springboot 使用zookeeper實(shí)現(xiàn)分布式隊(duì)列的基本步驟
這篇文章主要介紹了springboot 使用zookeeper實(shí)現(xiàn)分布式隊(duì)列,通過(guò)ZooKeeper的協(xié)調(diào)和同步機(jī)制,多個(gè)應(yīng)用程序可以共享一個(gè)隊(duì)列,并按照先進(jìn)先出的順序處理隊(duì)列中的消息,需要的朋友可以參考下2023-08-08簡(jiǎn)單了解synchronized和lock的區(qū)別
這篇文章主要介紹了簡(jiǎn)單了解synchronized和lock的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09JavaWeb項(xiàng)目FullCalendar日歷插件使用的示例代碼
本篇文章主要介紹了JavaWeb項(xiàng)目FullCalendar日歷插件使用的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08SpringBoot入門實(shí)現(xiàn)第一個(gè)SpringBoot項(xiàng)目
今天我們一起來(lái)完成一個(gè)簡(jiǎn)單的SpringBoot(Hello World)。就把他作為你的第一個(gè)SpringBoot項(xiàng)目。具有一定的參考價(jià)值,感興趣的可以了解一下2021-09-09@TransactionalEventListener的使用和實(shí)現(xiàn)原理分析
這篇文章主要介紹了@TransactionalEventListener的使用和實(shí)現(xiàn)原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12