Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查每个控制器方法中的登录状态_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 检查每个控制器方法中的登录状态

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

我用C#在ASP.NET MVC4中编写了一个Web应用程序。我使用FormsAuthentication.SetAuthCookie(用户名,true)登录用户;方法

现在我想检查每个控制器的登录状态。如果没有人登录,则应将用户重定向到登录控制器视图。我不想手动将这段代码添加到每个控制器中


谁有主意,怎么做

使用[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”)]