這篇文章主要介紹了SpringBoot密碼找回功能怎么弄,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
我們一直強(qiáng)調(diào)成都網(wǎng)站建設(shè)、成都網(wǎng)站制作對(duì)于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對(duì)待,選擇一個(gè)安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)站設(shè)計(jì)公司不一定是大公司,成都創(chuàng)新互聯(lián)公司作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。
最近在做自己的項(xiàng)目,其中有一個(gè)大家都知道的功能就是找回密碼。這里分享一下我的做法,因?yàn)檫@中間實(shí)在有太多坑了。所以記錄一下。
使用技術(shù):SpringBoot1.5.6、JPA、SpringSecurity4、MySQL、BootStrap等等等。。。
密碼找回流程圖:
首先,先來給大家介紹一下密碼找回的基本原理:
接著,按照流程圖我們來實(shí)現(xiàn)一下首先第一步是點(diǎn)擊跳轉(zhuǎn)到找回密碼界面:我用的是這種方式大家隨意
找回密碼界面為:
第二步:判斷輸入的賬戶是否有效
下面是如果存在的話就生成URL鏈接:
backPassword:
第三步:判斷重置表中是否有該賬戶,重置表是一張保存URL的表(過期時(shí)間、sid、賬戶信息等)
這樣做的目的是:如果存在該條數(shù)據(jù)而不去刪除的話,下次找回密碼的時(shí)候就會(huì)生成2條賬戶一樣,但是sid不一樣的數(shù)據(jù),這樣的壞處是:發(fā)郵件的時(shí)候不知道該返回哪個(gè)URL,因?yàn)橛?條URL
第四步:郵件發(fā)送
我們先來看下效果:
接下來就是重要部分:如何處理驗(yàn)證鏈接,首先我們可以看到/user/reset_password這個(gè)是一個(gè)請(qǐng)求后面是它的參數(shù),所以切記!
我們要寫一個(gè)請(qǐng)求,路由就是/user/reset_password,與此同時(shí)需要在SpringSecurity中對(duì)該請(qǐng)求放行。驗(yàn)證的過程是這樣的:首先把從請(qǐng)求傳過來的sid和userName(也就是郵箱)和數(shù)據(jù)庫中的sid和account比對(duì),同時(shí)還要對(duì)比時(shí)間是否是在有效期30分鐘內(nèi),如果這些都滿足的話就返回true,否則為false。需要注意的是:這里有一個(gè)替換是空格替換為+號(hào),是因?yàn)镠TML傳給后臺(tái)的時(shí)候+號(hào)被自動(dòng)轉(zhuǎn)為了空格,如果不替換為+號(hào)的話就會(huì)一直提示驗(yàn)證失敗!??!一旦返回true的話就代表驗(yàn)證URL通過,就跳轉(zhuǎn)到重置密碼界面:
注意:我這里沒有對(duì)驗(yàn)證進(jìn)行優(yōu)化,不應(yīng)該有這么多的if else嵌套
對(duì)請(qǐng)求路由進(jìn)行放行:如果不放行的話點(diǎn)擊鏈接就會(huì)跳轉(zhuǎn)至登錄界面
跳轉(zhuǎn)到重置頁面,如果我們這時(shí)2次輸入的密碼不一致就會(huì)有如下的提示,我這個(gè)是使用JS做的校驗(yàn):
當(dāng)然為了嚴(yán)謹(jǐn)我們?cè)诤笈_(tái)也進(jìn)行2次密碼校驗(yàn),如果輸入的是一致的話才去更新信息,不一致的話就返回錯(cuò)誤
這里倒是沒什么,就是注意下在密碼保存到數(shù)據(jù)庫之前,使用MD5+鹽加密一下,之后保存就可以,我們來看下2次密碼輸入正確的效果:頁面提示修改成功后臺(tái)無報(bào)錯(cuò),這時(shí)候使用新密碼就可以進(jìn)行登錄
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享SpringBoot密碼找回功能怎么弄內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!