shiro認(rèn)證
自定義的Realm在進(jìn)行shiro認(rèn)證時(shí),只判斷了密碼有沒(méi)有而沒(méi)有判斷對(duì)不對(duì),自定義Realm就返回SimpleAuthenticationInfo對(duì)象,請(qǐng)問(wèn)是在 subject.isAuthenticated()方法中進(jìn)行驗(yàn)證login的密碼和返回密碼是否一致嘛?
加鹽加密時(shí)login傳遞的是明文,返回的是加鹽加密后的,請(qǐng)問(wèn)在驗(yàn)證時(shí)時(shí)自動(dòng)將login的密碼加鹽加密碼
2018-12-21
String password = getPasswordByUsername(username);通過(guò)這個(gè)去獲取的密碼,如果密碼沒(méi)有找到是直接 return null,不為空才創(chuàng)建SimpleAuthenticationInfo返回對(duì)象的,這個(gè)是在創(chuàng)建對(duì)象之前的,這里用的是map一個(gè)定值,也可以是數(shù)據(jù)庫(kù)或者緩存中去查找密碼。
login傳遞的是明文,但是通過(guò)
//加密
HashedCredentialsMatcher matcher = new HashedCredentialsMatcher();
matcher.setHashAlgorithmName("md5");//加密算法
matcher.setHashIterations(1);//加密次數(shù)
customrealm.setCredentialsMatcher(matcher);
在提交認(rèn)證請(qǐng)求前直接進(jìn)行了加密,他直接和map中的數(shù)據(jù)進(jìn)行的匹配,這個(gè)是你手動(dòng)加鹽加密的,login認(rèn)證只是判斷你傳過(guò)來(lái)的參數(shù),在你手動(dòng)加鹽加密后是否和map中或者數(shù)據(jù)庫(kù)緩存中 的值一樣。