我已经用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