一、新建自己的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中,否则将会报错,至此就全部完成了。