數(shù)據(jù)庫賬號密碼加密詳解及實(shí)例
數(shù)據(jù)庫賬號密碼加密詳解及實(shí)例
數(shù)據(jù)庫中經(jīng)常有對數(shù)據(jù)庫賬號密碼的加密,但是碰到一個問題,在使用UserService對密碼進(jìn)行加密的時候,spring security 也是需要進(jìn)行同步配置的,因?yàn)閟pring security 中驗(yàn)證的加密方式是單獨(dú)配置的。如下:
<authentication-manager>
<authentication-provider user-service-ref="userDetailService">
<password-encoder ref="passwordEncoder" />
</authentication-provider>
</authentication-manager>
<beans:bean class="com.sapphire.security.MyPasswordEncoder" id="passwordEncoder">
<beans:constructor-arg value="md5"></beans:constructor-arg>
</beans:bean>
如上述配置文件所示,passwordEncoder才是在spring security對賬號加密校驗(yàn)的地方。
spring security在攔截之后,會首先對用戶進(jìn)行查找,通過自己定義的userDetailService來找到對應(yīng)的用戶,然后由框架進(jìn)行密碼的匹配驗(yàn)證。
從userDetailService得到user以后,就會進(jìn)入到DaoAuthenticationProvider中,這是框架中定義的 ,然后跳入其中的authenticate方法中。
該方法會進(jìn)行兩個檢查,分別是
* preAuthenticationChecks : 主要進(jìn)行的是對用戶是否過期等信息的校驗(yàn),調(diào)用的方法在userDetail中有定義的。 * additionalAuthenticationChecks : 這個就是用戶名密碼驗(yàn)證的過程了。
而PasswordEncoder是我們xml中注入的bean,所以了,我們調(diào)用的則是我們自己完成的passwordEncoder
public class MyPasswordEncoder extends MessageDigestPasswordEncoder {
public MyPasswordEncoder(String algorithm) {
super(algorithm);
}
@Override
public boolean isPasswordValid(String encPass, String rawPass, Object salt) {
return encPass.equals(DigestUtils.md5DigestAsHex(rawPass.getBytes()));
}
}
這是我對其實(shí)現(xiàn)的一個簡單版本,調(diào)用的就是spring自帶的加密算法,很簡單了,當(dāng)然也可以使用復(fù)雜的加密方法,這個就靠自己了
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
mysql 5.7.9 winx64在windows上安裝遇到的問題
mysql5.7.9版本以上在windwos上安裝時會遇到無法啟動但是沒有任何報錯的問題,怎么回事呢?接下來通過本文給大家介紹mysql 5.7.9 winx64在windows上安裝遇到的問題及解決方法,需要的朋友可以參考下2016-10-10
gearman + mysql方式實(shí)現(xiàn)持久化操作示例
這篇文章主要介紹了gearman + mysql方式實(shí)現(xiàn)持久化操作,簡單描述了持久化的概念、原理,并結(jié)合實(shí)例形式分析了gearman + mysql持久化操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-02-02
MySQL觸發(fā)器之判斷更新操作前后數(shù)據(jù)是否改變
這篇文章主要介紹了MySQL觸發(fā)器之判斷更新操作前后數(shù)據(jù)是否改變方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
使用python連接mysql數(shù)據(jù)庫之pymysql模塊的使用
這篇文章主要介紹了使用python連接mysql數(shù)據(jù)庫之pymysql模塊的使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
vscode安裝mysql相關(guān)插件的詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于vscode安裝mysql相關(guān)插件的詳細(xì)步驟,這將幫助你更高效地管理數(shù)據(jù)庫操作,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07

