首頁  >  文章  >  Java  >  基於SpringBoot密碼找回的方法實作(圖文)

基於SpringBoot密碼找回的方法實作(圖文)

不言
不言轉載
2019-02-01 10:57:112800瀏覽

這篇文章帶給大家的內容是關於基於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中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除