2014-10-31 51 views
0

我需要添加一些授權/驗證邏輯到現有的網頁表單。從本質上講,用戶將輸入他們的電子郵件地址,然後我檢查該電子郵件地址與現有數據庫,如果存在,我會發送一封電子郵件到包含激活鏈接到該Web應用程序的地址。一旦用戶點擊該鏈接,我希望他們的客戶端在短時間內被視爲「授權」(比如他們的瀏覽器會話)。然後,他們可以訪問某些頁面,直到其身份驗證過期。簡單的臨時身份驗證沒有用戶名或密碼

使用自定義ASP.NET表單身份驗證非常容易,但在做了一些研究之後,今天在授權/身份驗證方面似乎有更多選擇。諸如ASP.NET Identity 2,Katana/OWIN等等,它變得相當令人難以置信。

我正在尋找最簡單的方法來在MVC4應用程序中實現類似這樣的建議。如有必要,我應該可以將應用程序升級到MVC5。

回答

1

這基本上是相同的過程最密碼重置使用,所以你幾乎可以做法同樣的方式:

  1. 創建一個表來跟蹤這些「認證」。幾乎只需要令牌的列,日期時間的列和布爾值的列。日期時間可以追蹤令牌的創建日期和時間,然後您可以在代碼中使用該日期來計算它是否基於期望的時間框架過時,或者可以跟蹤令牌的過期日期和時間,然後只需檢查您的代碼是否過期日期已過。該布爾值將跟蹤電子郵件地址是否已被確認,通過跟蹤發送的電子郵件中的令牌鏈接。

  2. 在您的初始表格中,您收集電子郵件地址並將其與鹽和單向加密結合以生成令牌。您通過包含該令牌的鏈接發送電子郵件。將令牌和相應的日期時間值保存在表格中。

  3. 在用戶點擊鏈接後轉到的頁面上,使用URL中的標記查找表中匹配的行,檢查日期值並將布爾值設置爲true以確認。然後,將令牌存儲在Session中。

  4. 對於每個後續請求,請檢查1)Session中有一個令牌,以及2)該令牌仍然有效(在數據庫中查找並檢查日期時間和確認狀態)。如果令牌不存在或不再適用,請刪除該行,從Session中刪除令牌,然後將用戶重定向到原始電子郵件地址收集表單。否則,允許用戶查看任何內容。

相關問題