日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

解決Spring Security 用戶帳號已被鎖定問題

瀏覽:228日期:2023-07-25 08:25:04
1、問題描述

主要就是org.springframework.security.authentication.LockedException: 用戶帳號已被鎖定這個異常,完整異常如下:

[2020-05-09 16:07:00 下午]:DEBUG org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider$DefaultPreAuthenticationChecks.check(AbstractUserDetailsAuthenticationProvider.java:353)User account is locked[2020-05-09 16:07:00 下午]:DEBUG org.springframework.web.servlet.FrameworkServlet.logResult(FrameworkServlet.java:1101)Failed to complete request: org.springframework.security.authentication.LockedException: 用戶帳號已被鎖定[2020-05-09 16:07:00 下午]:DEBUG org.springframework.security.web.access.ExceptionTranslationFilter.handleSpringSecurityException(ExceptionTranslationFilter.java:170)Authentication exception occurred; redirecting to authentication entry pointorg.springframework.security.authentication.LockedException: 用戶帳號已被鎖定at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider$DefaultPreAuthenticationChecks.check(AbstractUserDetailsAuthenticationProvider.java:355)at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:165)at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:175)at cn.edu.njust.mango.security.SecurityUtils.login(SecurityUtils.java:82)at cn.edu.njust.mango.controller.SysLoginController.login(SysLoginController.java:104)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at cn.edu.njust.mango.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:27)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:92)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)

測試結果直接403

解決Spring Security 用戶帳號已被鎖定問題

2、問題分析

   明明用戶名和密碼正確,而且沒有設置狀態鎖定,怎么被鎖定了呢?這是由于我們在重寫UserDetails接口時,有個默認實現的方法public boolean isAccountNonLocked(),默認返回的是false,翻譯成人話就是:是否不上鎖,否,即上鎖。異常代碼如下:

package cn.edu.njust.mango.security;import com.fasterxml.jackson.annotation.JsonIgnore;import lombok.Data;import org.springframework.security.core.GrantedAuthority;import org.springframework.security.core.userdetails.UserDetails;import java.util.Collection;/** * @author Chen * @version 1.0 * @date 2020/5/8 7:42 * @description: */@Datapublic class JwtUserDetails implements UserDetails { private String username; private String password; private String salt; private Collection<? extends GrantedAuthority> authorities; public JwtUserDetails(String username, String password, String salt, Collection<? extends GrantedAuthority> authorities) { this.username = username; this.password = password; this.salt = salt; this.authorities = authorities; } @Override public boolean isAccountNonExpired() { return false; } @Override public boolean isAccountNonLocked() { return false; } @Override public boolean isCredentialsNonExpired() { return false; } @Override public boolean isEnabled() { return false; }}

解決Spring Security 用戶帳號已被鎖定問題

3、問題解決

知道原因就很好解決了。直接將返回值變成true就行了。修改后的代碼如下:

package cn.edu.njust.mango.security;import com.fasterxml.jackson.annotation.JsonIgnore;import lombok.Data;import org.springframework.security.core.GrantedAuthority;import org.springframework.security.core.userdetails.UserDetails;import java.util.Collection;/** * @author Chen * @version 1.0 * @date 2020/5/8 7:42 * @description: */@Datapublic class JwtUserDetails implements UserDetails { private String username; private String password; private String salt; private Collection<? extends GrantedAuthority> authorities; public JwtUserDetails(String username, String password, String salt, Collection<? extends GrantedAuthority> authorities) { this.username = username; this.password = password; this.salt = salt; this.authorities = authorities; }// 在實體類向前臺返回數據時用來忽略不想傳遞給前臺的屬性或接口。 @JsonIgnore @Override public boolean isAccountNonExpired() { return true; } @JsonIgnore @Override public boolean isAccountNonLocked() { return true; } @JsonIgnore @Override public boolean isCredentialsNonExpired() { return true; } @JsonIgnore @Override public boolean isEnabled() { return true; }}

解決Spring Security 用戶帳號已被鎖定問題

重啟服務器再次訪問。

解決Spring Security 用戶帳號已被鎖定問題

返回200,訪問成功!

4、總結

  書上的代碼直接運行絕大部分是對的,但是總有一些軟件的更新使得作者無能為力。之前的API是對的,但是之后就廢棄了或修改了是常有的事。所以我們需要跟蹤源代碼。這只是一個小小的問題,如果沒有前輩的無私奉獻,很難想象我們自己一天能學到多少內容。

到此這篇關于解決Spring Security 用戶帳號已被鎖定 問題的文章就介紹到這了,更多相關Spring Security 用戶帳號已被鎖定內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产综合精品| 久久精品凹凸全集| 精品国产三区在线| 麻豆精品视频在线观看| 国产精品99精品一区二区三区∴ | 亚洲综合激情在线| 午夜亚洲精品| 亚洲免费毛片| 亚洲视频国产精品| 日本99精品| 91成人在线精品视频| 欧美国产中文高清| 午夜久久中文| 欧美一区二区性| 国产精品日韩久久久| 亚洲伊人精品酒店| 日韩国产在线一| 国产精品亚洲综合久久| 高清一区二区三区av| 六月丁香综合| 欧美一级二区| 国产精品成久久久久| 91精品亚洲| 在线视频精品| 色8久久久久| 国产麻豆精品久久| 97精品国产福利一区二区三区| 日韩欧美网址| 国产综合亚洲精品一区二| 99在线|亚洲一区二区| 中文字幕亚洲影视| 欧美a在线观看| 亚洲高清不卡| 亚洲精品亚洲人成在线观看| 久久不见久久见免费视频7 | 丝袜美腿诱惑一区二区三区| 亚洲激情av| 日韩av中文在线观看| 精品美女视频 | 精品视频在线一区二区在线| 999精品在线| 日韩精品一二区| 另类综合日韩欧美亚洲| 欧美精品高清| 蜜桃视频一区二区| 精品中文字幕一区二区三区| 在线日韩av| 911亚洲精品| 精精国产xxxx视频在线播放 | 好吊日精品视频| 91精品美女| 亚洲天堂久久| 日本不卡中文字幕| 7777精品| 国产精品精品| 在线免费观看亚洲| 精品高清久久| 亚洲中字黄色| 精品视频一区二区三区在线观看 | 日本美女一区| 久热re这里精品视频在线6| 国产精品亚洲人成在99www| 91精品一区二区三区综合| 国产亚洲一区二区三区不卡| 婷婷激情综合| 久久永久免费| 亚洲精品综合| 免费看av不卡| 日本视频一区二区| 黑丝一区二区| av中文资源在线资源免费观看| 亚洲tv在线| 免费av一区| 国际精品欧美精品| 91九色综合| 亚洲综合日本| 三级小说欧洲区亚洲区| 欧美国产极品| 日本免费一区二区视频| 亚洲免费在线| 久久久久网站| 美女久久久久久| 在线看片日韩| 不卡中文字幕| 女生影院久久| 麻豆一区二区99久久久久| 日日夜夜免费精品视频| 午夜国产一区二区| 亚洲综合在线电影| 精品中文在线| 国产日韩三级| 日韩av黄色在线| 亚洲午夜免费| 国产精品视区| 久久国产精品成人免费观看的软件| 欧美激情久久久久久久久久久| 在线看片日韩| 亚洲精品va| 91精品国产乱码久久久久久久| 久久一区亚洲| 欧美久久亚洲| 日韩三级视频| 亚洲一区二区三区高清不卡| 亚洲欧美成人综合| 99成人在线| 亚洲欧美日韩高清在线| 999精品在线| 欧美日韩在线观看首页| 精品亚洲精品| 久久在线91| 久久精品三级| 精品中文字幕一区二区三区四区| 日韩精品乱码av一区二区| 蜜臀91精品一区二区三区| 老牛影视一区二区三区| 视频一区在线播放| 在线精品一区二区| 综合欧美亚洲| 亚洲精品美女| 日本a级不卡| 久久国产婷婷国产香蕉| 国产一精品一av一免费爽爽| 日韩动漫一区| 国产精品美女在线观看直播| 国产精品一区二区99| 国产精品久久久久久久久久久久久久久 | 欧美精品日日操| 特黄毛片在线观看| 日韩高清成人| 日韩精品首页| 日韩欧美三级| 欧美69视频| 蜜桃久久av| 日韩av不卡一区二区| 国产精品久久国产愉拍| 精品国产亚洲日本| 日韩在线中文| 精品91久久久久| 一区二区三区四区在线看| 欧美日韩精品一本二本三本 | 亚洲在线国产日韩欧美| 亚洲精品1区| 免费视频一区二区| 日本成人在线一区| 国产精品成人3p一区二区三区| 久久精品亚洲一区二区| 五月天av在线| 好吊一区二区三区| 男人操女人的视频在线观看欧美| 亚洲另类av| 国产精品亚洲欧美| 国产在线|日韩| 视频在线观看91| 久久丁香四色| 欧美手机在线| 综合亚洲自拍| 91麻豆精品| 色欧美自拍视频| 免费观看久久av| 亚洲免费毛片| 日韩av自拍| 亚洲欧美日韩国产一区| 国产精品嫩草影院在线看| 激情国产在线| 视频一区二区三区入口| 国产精品最新| 久久国产中文字幕| 婷婷精品在线| 欧美男人天堂| 婷婷精品在线| 91综合网人人| 一本一道久久a久久精品蜜桃| 一级欧美视频| 精品一区不卡| 免费日韩av片| 精品视频一区二区三区在线观看 | 蜜桃一区二区三区在线| 麻豆精品视频在线观看| 999精品色在线播放| 日韩美女精品| 国产v综合v| 日韩不卡在线观看日韩不卡视频 | 每日更新成人在线视频| 麻豆国产一区| 亚洲中午字幕| 精品视频在线你懂得| 在线亚洲精品| 国产一区二区三区久久久久久久久| 亚洲综合电影一区二区三区| 精品五月天堂| 香蕉久久夜色精品国产| 国产伊人久久| 亚洲精品三级| 国产精品av一区二区| 国产精品sm| 亚洲精品影视| 午夜国产精品视频| 久久久久久夜| 国产欧美午夜| 中文久久精品|