這篇文章帶給大家的內容是關於基於SpringBoot密碼找回的方法實現(圖文),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
最近在做自己的項目,其中有一個大家都知道的功能就是找回密碼。這裡分享一下我的做法,因為這中間實在有太多坑了。所以記錄一下。
使用技術:SpringBoot1.5.6、JPA、SpringSecurity4、MySQL、BootStrap等等等。 。 。
密碼找回流程圖:
首先,先來跟大家介紹一下密碼找回的基本原理:
接著,依照流程圖我們來實現一下首先第一步是點選跳到找回密碼介面:我用的是這種方式大家隨意
找回密碼介面為:
第二步:判斷輸入的帳號是否有效
下面是如果存在的話就產生URL連結:
backPassword:
第三個步驟:判斷重置表中是否有該帳戶,重置表是一張保存URL的表(過期時間、sid、帳戶資訊等)
## 這樣做的目的是:如果存在該條數據而不去刪除的話,下次找回密碼的時候就會生成2條帳戶一樣,但是sid不一樣的數據,這樣的壞處是:發郵件的時候不知道該回哪個URL,因為有2條URL第四步:郵件發送 我們先來看下效果: 接下來就是重要部分:如何處理驗證鏈接,首先我們可以看到/user/reset_password這個是一個請求後面是它的參數,所以切記! 我們要寫一個請求,路由就是/user/reset_password,同時需要在SpringSecurity中對該請求放行。驗證的過程是這樣的:首先把從請求傳過來的sid和userName(也就是郵箱)和資料庫中的sid和account比對,同時還要對比時間是否是在有效期30分鐘內,如果這些都滿足的話就回傳true,否則為false。要注意的是:這裡有一個替換是空格替換為 號,是因為HTML傳給後台的時候 號被自動轉為了空格,如果不替換為 號的話就會一直提示驗證失敗! ! !一旦回傳true的話就代表驗證URL通過,就跳到重設密碼介面: #:我這裡沒有對驗證進行最佳化,不應該有這麼多的if else嵌套對請求路由進行放行:如果不放行的話點擊連結就會跳到登入介面跳到重設頁面,如果我們這時2次輸入的密碼不一致就會有如下的提示,我這個是使用JS做的校驗: 當然為了嚴謹我們在後台也進行2次密碼校驗,如果輸入的是一致的話才去更新信息,不一致的話就返回錯誤
#
這裡倒是沒什麼,就是注意下在密碼保存到資料庫之前,使用MD5 鹽加密一下,之後保存就可以,我們來看下2次密碼輸入正確的效果:頁面提示修改成功後台無報錯,這時候使用新密碼就可以進行登入
以上是基於SpringBoot密碼找回的方法實作(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!