2013-02-22 63 views
0

所以我開始用模板在MVC 4中構建網站,一切都很順利。但是,我覺得模板中已經添加了很多功能,這些功能我絲毫不明白,因此正確使用其中一些功能是一個挑戰。其中一個特點就是登錄系統。如何設置登錄?表單身份驗證

現在我成功地安裝和跟我的外部數據庫,而很多麻煩,但我/我在模板上如何知道用戶名完全喪失,他已登錄。

所以我正在嘗試重新創建/設置相同的功能,但從頭開始,我可以理解它是如何工作的。這就是說...我迷路了!

[AllowAnonymous] 
public ActionResult Login(LoginModel model) 
{ 
    try 
    { 
     var canLogin = Services.Login(model.Username, model.Password); 
     var cas = Services.CheckAcountStatus(canLogin.Token); 

     if (cas.Payload.Items.Exists(m => !m.IsSynchronized)) RedirectToAction("VerifyPin", "Account", cas.Payload); 

     return RedirectToAction("Index", "MyPage"); 
    } 
    catch (CustomException ase) 
    { 
      ModelState.AddModelError("", ErrorCodeToString(ase.Error)); 
    } 

     return View(model); 
} 

這是我到目前爲止。

<authentication mode="Forms"> 
    <forms name="MyName" loginUrl="~/Account/Login" timeout="30" /> 
</authentication> 

大量的實例對設置使用EF和這樣的數據庫的解釋,但恐怕這是equivelant我的外部數據庫。

數據庫確實需要知道用戶是否已登錄?或者它更多隻是一個cookie?

除此之外,我不知道該去哪裏。如果有人能夠至少將我指向一個好的方向,我將不勝感激。

最終我唯一的真正的目標是有一個用戶在登錄頁面之間通信的簡單方法

回答

0
if (Request.IsAuthenticated) 
     { 
      // Lets us know if the Request is authenticated 
     } 

一個簡單的答案:「最終我唯一的真正的目標是在用戶登錄的頁面之間有一個簡單的通信方式。「

我會建議閱讀關於web.config中表單身份驗證的配置選項以及研究formsauthentication ticket的內部運作。 MVC也有你可以使用的授權屬性。

http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.108).aspx

+0

稍微好一點的搜索後,我設法創建了一個新的自定義Authorize屬性,以滿足我的需求以及FormsAuthentication。 – Zholen 2013-02-26 19:06:50

0

ASP.NET MVC 4引入了一個名爲SimpleMemberhsip新成員提供非常靈活且易於使用。這裏是一個article that shows you how to customize SimpleMembership,這可能是您的最佳方法,而不是嘗試從頭開始構建與ASP.NET窗體身份驗證兼容的安全框架。表單身份驗證依賴於Cookie來判斷用戶是否跨頁面登錄。我的代碼示例中沒有看到處理cookie的任何內容。如果您查看Internet模板生成的Login方法,您將看到WebSecurity.Login方法不僅處理用戶身份驗證,還處理cookie的生成。