2013-02-26 62 views
1

我已經用C#在ASP.NET MVC4中編寫了一個webApp。我使用FormsAuthentication.SetAuthCookie(username,true)登錄用戶;方法。檢查每個控制器方法中的登錄狀態

現在我想檢查每個控制器的登錄狀態。如果沒有人登錄,則應將用戶重定向到登錄控制器視圖。我不想手動將這段代碼添加到每個控制器。

任何想法,如何做到這一點?

+1

控制器 – 2013-02-26 15:44:29

+1

上使用[授權]屬性或者,註冊一個全球授權過濾器,從而可以省略授權屬性在每個控制器上。您仍然可以通過AllowAnonymous屬性允許匿名訪問。 – fjdumont 2013-02-26 15:47:46

回答

2

使用[AuthorizeAttribute]來實現你所需要的。例如:

public class AccountController : Controller 
{ 

    [Authorize] 
    ActionResult ActionRequiringAuthorization()... 
    .... 

    [AllowAnonymous] //Will allow both, authenticated and non-authenticated requests 
    ActionResult PublicAction() ... 
} 

如果用戶不再驗證,他會在試圖執行飾有授權屬性的任何行動重定向到登錄頁面。

可以裝點整個控制器相同的屬性適用於所有操作,如:

[Authorize] 
public class AccountController : Controller 
+0

您還可以檢查用戶是否使用User.Identity.IsAuthenticated在您的控制器方法中進行了身份驗證。但是,控制訪問的最佳方式是提到的屬性@Icarus。這些也可以配置爲像這樣的特定角色[Authorize(Roles =「role1,role2」)] – amhed 2013-02-27 15:11:33