ASP.NET Core 中的简单授权

ASP.NET Core 中的授权通过 [Authorize] 属性及其各种参数控制。 在其最基本的形式中,通过向控制器、操作或 [Authorize] Page 应用 Razor 属性,可限制为仅允许经过身份验证的用户访问该组件。

使用 [Authorize] 属性

以下代码限制为仅允许经过身份验证的用户访问 AccountController

cs 复制代码
[Authorize]
public class AccountController : Controller
{
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

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

cs 复制代码
public class AccountController : Controller
{
   public ActionResult Login()
   {
   }

   [Authorize]
   public ActionResult Logout()
   {
   }
}

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

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

cs 复制代码
[Authorize]
public class AccountController : Controller
{
    [AllowAnonymous]
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

此代码仅允许经过身份验证的用户访问 AccountController,但 Login 操作除外,每个人都可以访问该操作,无论其状态是经过身份验证、未经过身份验证还是匿名。

[AllowAnonymous] 绕过授权语句。 如果将 [AllowAnonymous] 和某个 [Authorize] 属性结合使用,系统将忽略 [Authorize] 属性。 例如,如果在控制器级别应用 [AllowAnonymous]

  • 将忽略来自同一控制器上的属性 [Authorize] 或控制器上的操作方法的任何授权要求。
  • 身份验证中间件不会短路,但不需要成功。

以下代码限制为仅允许经过身份验证的用户访问 LogoutModelRazor 页面:

cs 复制代码
[Authorize]
public class LogoutModel : PageModel
{
    public async Task OnGetAsync()
    {

    }

    public async Task<IActionResult> OnPostAsync()
    {

    }
}
相关推荐
leonardee11 分钟前
Golang笔记——Interface类型
java·后端
武子康17 分钟前
大数据-155 Apache Druid 存储与查询架构实战:Segment/Chunk/Roll-up/Bitmap 一文讲清
大数据·后端·nosql
张彦峰ZYF20 分钟前
高并发优惠权益聚合接口的优雅实现(含超时控制 + 来源标识 + Fallback 降级)
java·后端·面试
聆听幸福23 分钟前
Python判断语句
后端
yuuki23323335 分钟前
【数据结构】常见时间复杂度以及空间复杂度
c语言·数据结构·后端·算法
程序员麻辣烫1 小时前
如何更换MySQL表的自增主键
后端
发仔1231 小时前
Java的Quartz定时任务引擎详解
java·后端
xyy1231 小时前
.NET Serilog
后端
程序猿小蒜1 小时前
基于springboot的汽车资讯网站开发与实现
java·前端·spring boot·后端·spring