我已經用C#在ASP.NET MVC4中編寫了一個webApp。我使用FormsAuthentication.SetAuthCookie(username,true)登錄用戶;方法。檢查每個控制器方法中的登錄狀態
現在我想檢查每個控制器的登錄狀態。如果沒有人登錄,則應將用戶重定向到登錄控制器視圖。我不想手動將這段代碼添加到每個控制器。
任何想法,如何做到這一點?
我已經用C#在ASP.NET MVC4中編寫了一個webApp。我使用FormsAuthentication.SetAuthCookie(username,true)登錄用戶;方法。檢查每個控制器方法中的登錄狀態
現在我想檢查每個控制器的登錄狀態。如果沒有人登錄,則應將用戶重定向到登錄控制器視圖。我不想手動將這段代碼添加到每個控制器。
任何想法,如何做到這一點?
使用[AuthorizeAttribute]來實現你所需要的。例如:
public class AccountController : Controller
{
[Authorize]
ActionResult ActionRequiringAuthorization()...
....
[AllowAnonymous] //Will allow both, authenticated and non-authenticated requests
ActionResult PublicAction() ...
}
如果用戶不再驗證,他會在試圖執行飾有授權屬性的任何行動重定向到登錄頁面。
可以裝點整個控制器相同的屬性適用於所有操作,如:
[Authorize]
public class AccountController : Controller
您還可以檢查用戶是否使用User.Identity.IsAuthenticated在您的控制器方法中進行了身份驗證。但是,控制訪問的最佳方式是提到的屬性@Icarus。這些也可以配置爲像這樣的特定角色[Authorize(Roles =「role1,role2」)] – amhed 2013-02-27 15:11:33
控制器 – 2013-02-26 15:44:29
上使用[授權]屬性或者,註冊一個全球授權過濾器,從而可以省略授權屬性在每個控制器上。您仍然可以通過AllowAnonymous屬性允許匿名訪問。 – fjdumont 2013-02-26 15:47:46