【已解決】SpringBoot整合security賬號(hào)密碼正確卻提示錯(cuò)誤
一:引言
SpringSecurity的密碼校驗(yàn)并不是直接使用原文進(jìn)行比較,而是使用加密算法將密碼進(jìn)行加密(更準(zhǔn)確地說(shuō)應(yīng)該進(jìn)行Hash處理,此過(guò)程是不可逆的,無(wú)法解密),最后將用戶提供的密碼以同樣的方式加密后與密文進(jìn)行比較。對(duì)于我們來(lái)說(shuō),用戶提供的密碼屬于隱私信息,直接明文存儲(chǔ)并不好,而且如果數(shù)據(jù)庫(kù)內(nèi)容被竊取,那么所有用戶的密碼將全部泄露,這是我們不希望看到的結(jié)果,我們需要一種既能隱藏用戶密碼也能完成認(rèn)證的機(jī)制,而Hash處理就是一種很好的解決方案,通過(guò)將用戶的密碼進(jìn)行Hash值計(jì)算,計(jì)算出來(lái)的結(jié)果無(wú)法還原為原文,如果需要驗(yàn)證是否與此密碼一致,那么需要以同樣的方式加密再比較兩個(gè)Hash值是否一致,這樣就很好的保證了用戶密碼的安全性。
我們這里使用的是SpringSecurity提供的BCryptPasswordEncoder,至于加密過(guò)程,這里不做深入講解。
現(xiàn)在,我們可以嘗試使用此賬號(hào)登錄,在登錄后,就可以隨意訪問(wèn)我們的網(wǎng)站內(nèi)容了。
二:使用數(shù)據(jù)庫(kù)認(rèn)證
前面我們已經(jīng)實(shí)現(xiàn)了直接認(rèn)證的方式,那么如何將其連接到數(shù)據(jù)庫(kù),通過(guò)查詢數(shù)據(jù)庫(kù)中的內(nèi)容來(lái)進(jìn)行用戶登錄呢?
首先我們需要將加密后的密碼添加到數(shù)據(jù)庫(kù)中作為用戶密碼:
public class MainTest {
@Test
public void test(){
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
System.out.println(encoder.encode("123456"));
}
}
三:錯(cuò)誤原因:
我們的SpringSecurity的密碼校驗(yàn)并不是直接使用原文進(jìn)行比較,而是使用加密算法將密碼進(jìn)行加密(更準(zhǔn)確地說(shuō)應(yīng)該進(jìn)行Hash處理,此過(guò)程是不可逆的,無(wú)法解密),最后將用戶提供的密碼以同樣的方式加密后與密文進(jìn)行比較。
簡(jiǎn)而言之:我們驗(yàn)證的密碼是比較該密碼加密后和數(shù)據(jù)庫(kù)存儲(chǔ)密文是否一樣。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-510169.html
解決方法
將密碼進(jìn)行加密后,存儲(chǔ)到數(shù)據(jù)庫(kù),比如123456,加密后成字符串,存入數(shù)據(jù)庫(kù),之后再進(jìn)行身份驗(yàn)證的時(shí)候,直接密碼直接輸入123456即可文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-510169.html
MD5解密網(wǎng)址:點(diǎn)我跳轉(zhuǎn)
到了這里,關(guān)于【已解決】SpringBoot整合security賬號(hào)密碼正確卻提示錯(cuò)誤的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!