2010-04-16 92 views
0

我想在我的Java Web應用程序中實現忘記密碼功能。我想實現這樣的:如何在數據庫記錄中「更新」更改密碼唯一代碼?

  1. 用戶輸入他們的帳戶的電子郵件地址,並按下「忘記密碼」按鈕
  2. 應用程序生成的字符和數字組成的獨特代碼,併發送一個鏈接與作爲參數傳遞給用戶的電子郵件地址
  3. 用戶點擊該鏈接,它們都帶有一種形式,他們可以輸入新密碼

我想要做的就是確保鏈接(即唯一代碼)「過期」的是什麼小時後用戶按下忘記密碼按鈕,以便如果攻擊者可以訪問他們的電子郵件帳戶,則該鏈接將無法工作,除非他們在第一個小時內獲得訪問權限。

我不知道如何使數據庫'過期'或清除用戶帳戶記錄的代碼。我怎麼能實現這個?

回答

3

ValidUntil列添加到包含代碼的表中,並在讓用戶更改密碼之前檢查該列。

+2

我發現最好存儲代碼的生成日期,因爲a)您可以輕鬆更改允許的時間,而無需更新數據庫中的現有數據,並且b)在測試期間,您可以通過更改模擬超時代碼中所允許的時間,而不是亂用數據庫中的數據。 – RedFilter 2010-04-16 15:50:05

+0

@OrbMan,我同意a),我不認爲這個評論框允許我解釋爲什麼我不認爲b)適用。 – 2010-04-16 15:55:45

+0

酷,很好的簡單的解決方案 - 現在感覺有點傻:) – JMM 2010-04-16 15:59:17

0

您將日期存儲在數據庫中生成唯一代碼的日期。當用戶點擊鏈接時,如果它超過自生成唯一代碼以來的允許時間,則不要讓他們更改密碼。