記錄一次springsecurity5.0.6做權限登錄異常緩慢的問題解決記錄


添加pom依賴

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>

此依賴會加載 springsecurity5.0.6版本

做完權限功能后,發現登錄異常緩慢,啟動后的第一次登錄需要14s,退出后登錄需要7s。
把日志打印設置到debug級別,發現日志打印的時間有兩個差距巨大的斷層,沒個斷層有7秒,而且都是在 繼承 UserDetailsService 這個類之前或者之后

進入自定義用戶類之前一次打印為 o.s.s.authentication.ProviderManager - Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider

然后根據日志找到 ProviderManager.java 和 DaoAuthenticationProvider.java(在security的核心包core中)

 

然后發現是標紅處的執行時間特別長,然后斷點一步步走下去

 

 

BCrypt.checkpw(rawPassword.toString(), encodedPassword);卡死


原來是自己選用的密碼加密器一直有問題

 

然后果斷修改一個, 這么多可以用的 最后選擇用了 Md4PasswordEncoder 雖然已經過時了 但是為了驗證是否是加密器的問題 還是修改了,改完之后,登錄果然秒入了(修改了加密器 還需要修改密碼 不然匹配方式不一樣是不能登錄的)


 

當然 看着過時類的橫線不爽,自己還可以寫一個 MD5的或者AES的 只要實現 org.springframework.security.crypto.password.PasswordEncoder 這個類的兩個方法就行


 

 
        
我自己用MD5實現一個密碼加密類。

添加完自定義類之后 還需要在配置文件中添加配置,修改密碼后登錄也是秒速

 

 
        







 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM