2014-05-03 91 views
0

我通過簡單地驗證用戶身份並將其信息記錄在Cookie中來實現登錄我的網站。爲了保護需要註冊用戶的頁面,我正在做的是調用一個方法來讀取cookie並嘗試再次驗證用戶,所以如果cookie沒有過期,並且用戶在裏面發現並且傳入數據庫,會話繼續。ASP.Net MVC登錄練習

因爲我在控制器的每一個動作中調用這個方法,我有點不確定我所做的是否正確,所以我的問題是有沒有更好的方法來保證訪問控制器不必一遍又一遍地重寫相同的代碼?我做了什麼

例子:

public ActionResult Act1() { 
    if (CheckCookie() == true) 
     return View(); 
    else 
     return RedirectToAction("Login","Home"); 
} 

public ActionResult Act2() { 
    if (CheckCookie() == true) 
     return View(); 
    else 
     return RedirectToAction("Login","Home"); 
} 

正如你所看到的一樣樣的代碼重複在我執行的登錄方式的每個動作。

+0

您應該創建一個新的互聯網類型mvc.net網站,並檢查生成的示例如何在需要用戶進行身份驗證的控制器和/或操作上使用[Authorize]。 –

+0

@MattiasÅslund:Visual Studio模板使用成員資格,我對此沒有興趣,我有自己的數據庫,並使用實體框架。 – JAX

回答

2

你會想看看http://www.asp.net/identity ,因爲這是在ASP.NET網站內執行驗證的一個很好的起點。它包含有關如何使用OAuth,OpenId或FormsAuthentication創建新項目模板的資源鏈接。

您正在嘗試編寫您自己的表單身份驗證,這是不必要的。在ASP.NET MVC中,如果使用ASP.NET Identity或其他類實現FormsAuthentication,則可以讓這些類安全地編寫cookie並在運行時(安全地)爲您檢索它。通過ASP.NET MVC網站上的表單身份驗證,您可以使用裝飾器(如安全地控制對這些資源的訪問權限)的[Authorize]或[AllowAnonymous]裝飾您的控制器或操作方法。

請查看該引用並按照註釋中的建議,在MVC中創建一個新的模板,並查看模板爲您創建的示例代碼。

+0

Pepto :(沒有不尊重我的朋友),沒有你的答案的任何部分是任何幫助,但這一個「[授權]」,你在無意中爲我的想法中的行爲創建了一個自定義屬性的想法。非常非常感謝你。給你一個+1 – JAX

+0

好吧,我很高興我可以幫忙=)爲長長的版本道歉。快樂編碼! – Pepto

+0

@Pierre我主要爲現有用戶數據庫編寫網站。創建自定義MembershipProvider和RolesProvider,並在Web.Config中註冊它們。然後你可以使用普通的裝飾器來處理你自己的用戶數據庫。你真的不應該寫你自己的plumming。 –