在 MVC 中的授权控制通过AuthorizeAttribute
属性以及其各种参数。 简单地说,应用AuthorizeAttribute
到控制器或操作的限制访问权限,到控制器或操作保存到任何经过身份验证的用户属性。
例如,下面的代码限制访问AccountController
到任何经过身份验证的用户。
[Authorize] public class AccountController : Controller { public ActionResult Login() { } public ActionResult Logout() { } }
如果你想要对某个操作而不是在控制器应用授权,应用AuthorizeAttribute
操作本身的属性:
public class AccountController : Controller { public ActionResult Login() { } [Authorize] public ActionResult Logout() { } }
现在,只有经过身份验证的用户可以访问Logout
函数。
此外可以使用AllowAnonymous
属性以允许未经身份验证的用户到单个操作的访问。 例如:
[Authorize] public class AccountController : Controller { [AllowAnonymous] public ActionResult Login() { } public ActionResult Logout() { } }
这将允许到只有经过身份验证的用户AccountController
,除Login
操作,可供每个用户,而不考虑其已经过身份验证或未经身份验证 / 匿名状态。
警告
[AllowAnonymous]
绕过授权的所有语句。 如果你将结合[AllowAnonymous]
及任何[Authorize]
属性,[Authorize]
属性被忽略。 例如,如果将应用[AllowAnonymous]
在控制器级别中,任何[Authorize]
忽略属性在同一个控制器上 (或中它的任何操作)。