一、新建自己的MyAuthenticationProvider繼承Spring Security的DaoAuthenticationProvider
1.理論
Spring Security默認的密碼比對主要是依靠DaoAuthenticationProvider下的additionalAuthenticationChecks方法來完成的,下面是additionalAuthenticationChecks的源碼
我們只需要將additionalAuthenticationChecks方法進行重寫,就可以自定義密碼比對業務了。
2.實戰
由於前台傳入的是經過sm2加密過的密碼,但是數據庫里面存入的又是將明文加密過的密碼,所以就不能再使用Spring Security默認的密碼比對方式,必須在比對之前,先將加密的密碼進行解密。
紅色方框內為我自己的解密方法,根據自己的加密方式進行解密即可,其他代碼均與additionalAuthenticationChecks的源碼保持一致即可。
二、將MyAuthenticationProvider注入到Spring容器中
需要注意的是,在注入MyAuthenticationProvider的時候,一定要記得將自己的myUserDetailService(myUserDetailService為Spring Security默認UserDetailsService的實現類)傳入到MyAuthenticationProvider中,否則將會報錯,至此就全部完成了。