C# 检查每个控制器方法中的登录状态
我用C#在ASP.NET MVC4中编写了一个Web应用程序。我使用FormsAuthentication.SetAuthCookie(用户名,true)登录用户;方法 现在我想检查每个控制器的登录状态。如果没有人登录,则应将用户重定向到登录控制器视图。我不想手动将这段代码添加到每个控制器中C# 检查每个控制器方法中的登录状态,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我用C#在ASP.NET MVC4中编写了一个Web应用程序。我使用FormsAuthentication.SetAuthCookie(用户名,true)登录用户;方法 现在我想检查每个控制器的登录状态。如果没有人登录,则应将用户重定向到登录控制器视图。我不想手动将这段代码添加到每个控制器中 谁有主意,怎么做 使用[AuthorizeAttribute]实现您需要的功能。例如: public class AccountController : Controller { [Author
谁有主意,怎么做 使用[AuthorizeAttribute]实现您需要的功能。例如:
public class AccountController : Controller
{
[Authorize]
ActionResult ActionRequiringAuthorization()...
....
[AllowAnonymous] //Will allow both, authenticated and non-authenticated requests
ActionResult PublicAction() ...
}
如果用户不再经过身份验证,在尝试执行任何带有Authorize属性的操作时,他将被重定向到登录页面
您可以装饰整个控制器,以便将相同的属性应用于所有操作,如中所示:
[Authorize]
public class AccountController : Controller
在控制器上使用[authorization]属性可选地,注册一个全局授权筛选器,以便可以忽略每个控制器上的authorization属性。您仍然可以通过AllowAnonymous属性允许匿名访问。您还可以在控制器方法中使用user.Identity.IsAuthenticated检查用户是否已通过身份验证。但控制访问的最佳方法是使用@Icarus提到的属性。也可以为以下特定角色配置这些角色[授权(roles=“role1,role2”)]