資料庫中密碼相關欄位都不是明文,肯定是加密之後的,傳統方式一般是使用MD5加密。
單純使用不加鹽的MD5加密方式,當兩個使用者的密碼相同時,會發現資料庫中存在相同內容的密碼,這樣也是不安全的。我們希望即便是兩個人的原始密碼一樣,加密後的結果也不一樣。
下面進行shiro密碼 加密加鹽配置:
1。ShiroConfig中新增密碼比較器
2。將密碼比較器配置給ShiroRealm
3。密碼比較器RetryLimitHashedCredentialsMatcher
自定義的密碼比較器,跟前面部落格中邏輯沒有變化,唯一變的是 繼承的類從 變為
RetryLimitHashedCredentialsMatcher完整內容如下:
4。修改ShiroRealm中doGetAuthenticationInfo方法
跟之前的 相比,唯一改變的了
這一行程式碼,添加了 加鹽引數。
5。下面是生成密碼加密加鹽的方法,可以在註冊的時候對明文進行加密 加鹽 入庫
可能出現的問題
可能會發生這種情況,測試發現密碼不對,具體原因debug都可以發現,這裡直接把結果發出來:
第一種:
debug發現 傳入的密碼 經過加密加鹽之後是對的,但是 從資料庫中 獲取的密碼 卻是明文,原因是在中 方法中,最後返回的 第二個引數 是密碼,這個密碼 不是從前臺傳過來的密碼,而是從資料庫中查詢出來的
第二種:
debug發現 傳入的密碼 經過加密加鹽之後是對的,但是 從資料庫中 獲取的密碼 卻是更長的一段密文,原因是在中配置的一個屬性:
預設是,如果改為,則會出現 對比的時候從資料庫拿出密碼,然後轉 變成了另外一個更長的字串,所以怎麼對比都是不透過的。
分享
&
在看