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()
    {

    }
}
相关推荐
颜酱1 小时前
DFS 岛屿系列题全解析
javascript·后端·算法
小码哥_常2 小时前
Java后端定时任务抉择:@Scheduled、Quartz、XXL - Job终极对决
后端
uzong2 小时前
Skill 被广泛应用,到底什么是 Skill,今天详细介绍一下
人工智能·后端·面试
小码哥_常2 小时前
Kafka平替!SpringBoot+Redis Stream+消费组打造极致消息队列
后端
IT_陈寒4 小时前
Redis缓存击穿:3个鲜为人知的防御策略,90%开发者都忽略了!
前端·人工智能·后端
uzong5 小时前
Harness Engineering 是什么?一场新的 AI 范式已经开始
人工智能·后端·架构
唐叔在学习5 小时前
Python桌面端应用最小化托盘开发实践
后端·python·程序员
yuhaiqiang5 小时前
被 AI 忽悠后,开始怀念搜索引擎了?
前端·后端·面试
二闹6 小时前
Python文件读取三巨头你该选择哪一个?
后端·python
苏三说技术6 小时前
推荐几个牛逼的AI Agent项目
后端