ASP.NET Core 中的简单授权Simple authorization in ASP.NET Core

本文内容

MVC 中的授权通过 AuthorizeAttribute 属性及其各种参数进行控制。最简单的情况是,将 AuthorizeAttribute 属性应用于控制器或操作会将控制器或操作的访问权限限制为任何经过身份验证的用户。

例如,以下代码将对 AccountController 的访问限制为任何经过身份验证的用户。

  1. [Authorize]
  2. public class AccountController : Controller
  3. {
  4. public ActionResult Login()
  5. {
  6. }
  7. public ActionResult Logout()
  8. {
  9. }
  10. }

如果要对操作(而不是控制器)应用授权,请将 AuthorizeAttribute 属性应用到操作本身:

  1. public class AccountController : Controller
  2. {
  3. public ActionResult Login()
  4. {
  5. }
  6. [Authorize]
  7. public ActionResult Logout()
  8. {
  9. }
  10. }

现在只有经过身份验证的用户才能访问 Logout 函数。

你还可以使用 AllowAnonymous 属性允许未通过身份验证的用户访问各个操作。例如:

  1. [Authorize]
  2. public class AccountController : Controller
  3. {
  4. [AllowAnonymous]
  5. public ActionResult Login()
  6. {
  7. }
  8. public ActionResult Logout()
  9. {
  10. }
  11. }

这将仅允许经过身份验证的用户访问 AccountControllerLogin 操作除外,无论用户是否经过身份验证或未经身份验证/匿名状态,都可以访问该操作。

警告

[AllowAnonymous] 绕过所有授权语句。如果将 [AllowAnonymous] 和任何 [Authorize] 特性组合在一起,则将忽略 [Authorize] 特性。例如,如果在控制器级别应用 [AllowAnonymous],则将忽略同一控制器上的任何 [Authorize] 属性(或其中的任何操作)。