2014-09-06 288 views
4

我已經設置了一個快速頁面來接受一個電子郵件地址,該地址將發送一封電子郵件給它,稍後將包含重置密碼或新的臨時密碼的鏈接。ASP.Net MVC身份忘記密碼

我的項目是一個新的ASP .Net MVC項目使用身份。我認爲重置它的最好方法是發送鏈接到電子郵件,點擊後允許用戶輸入新鏈接,但是我不確定鏈接指向的頁面上應放置什麼,以允許此操作功能並保持網站安全。

在這種情況下,發送一個新的臨時文件最簡單嗎?

回答

1

這是太長,不適合在評論,所以希望我沒有得到downvoted沒有實際的代碼示例:o

是我見過的常見解決方法:

當用戶請求一個密碼重置,記錄一個GUID /隨機哈希和到期日期時間到用戶的信息在您的用戶存儲(最有可能的數據庫)。

帶有指向臨時頁面鏈接的電子郵件會發送到用戶的電子郵件地址(此解決方案確實需要有效的電子郵件地址)。

一旦臨時頁面被擊中,鏈接可以被設置爲立即過期(將過期日期設置爲datetime.now,或從用戶信息中刪除guid/hash等)。

這個臨時頁面URL可能在查詢字符串中有記錄用戶的guid/hash,所以應該如果沒有電子郵件中的鏈接就很難找到。爲了增加安全性,可以要求用戶輸入要求重置密碼的用戶名/電子郵件(因爲應該沒有提及頁面上的用戶名/密碼。一旦該確認完成(或不完成),給用戶

關於「忘記密碼鏈接」的另一個最後注意事項沒有提供關於用戶名是否「不存在」的任何信息,因爲這可能會導致查找有效用戶名的可能性您的網站

編輯:

這裏可以解釋它比我(不看「接受」的答案,看看最給予好評以前的堆棧溢出問題d答案。 :)

Generate temporary URL to reset password

+0

雖然我總是想知道「不要告訴他們用戶名是壞的」東西。我的意思是,如果我想這樣做,只要嘗試註冊用戶名直到被接受爲止就會更容易。 – Casey 2014-09-07 01:11:20

+0

是的,這是真的 - 「每一個小小的安全層」只是阻止惡意的人的另一種方式,雖然...我聽說過它的措辭很好,然後讓我們看看我能否找到報價 – Kritner 2014-09-07 01:36:55

+0

另外並非所有網站(在至少不是我通常所做的)至少允許開放註冊,這通常授權給開發產品的企業所有者 - 在這種情況下,類似上述情況會產生更多影響。 – Kritner 2014-09-07 01:39:58

1

,可以看到採用了完整的樣品中"Microsoft ASP.NET Identity Samples 2.1.0-alpha1" NuGet包的預發佈版本「忘記密碼」功能。

步驟

  1. 創建空Web應用程序項目
  2. 安裝示例項目:安裝,包裝Microsoft.AspNet.Identity.Samples - 預
  3. 啓動應用程序並註冊一個新用戶。
  4. 前往登錄頁面點擊「忘記密碼」。然後添加最近註冊的用戶電子郵件。

然後,您將能夠調試應用程序,檢查「忘記密碼」過程。