asp.net-core - .net 核心在单一操作方法上覆盖 Controller 级别授权属性

标签 asp.net-core asp.net-core-mvc .net-core

在下面的 Controller 代码中,只有“管理员”角色的用户才能访问 GetData() 操作方法, 因为 Controller 级别的授权属性。 但我也希望只有“经理”角色的用户才能访问 GetData() 操作方法,如何编写 这个的自定义属性?

[Authorize(Roles = "Administrator")]
Pulic class AdminController : Controller
{

[Authorize(Roles = "Administrator, Manager")]
public IActionResult GetData()
{
}

}

最佳答案

类级别的属性总是首先被检查,所以它拒绝任何不在正确角色中的人。您需要在类级别指定最广泛的访问权限,然后在需要的地方将其缩小到方法级别:

[Authorize(Roles = "Administrator, Manager")]
public class AdminController : Controller
{
    // no attribute needed here
    public IActionResult GetData()
    {
    }

    [Authorize(Roles = "Administrator")]
    public IActionResult RestrictedMethod()
    {
    }
}

关于asp.net-core - .net 核心在单一操作方法上覆盖 Controller 级别授权属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45457298/

相关文章:

docker - 使用 Nginx 反向代理时无法获取客户端的真实 IP

c# - 更新到 beta8 后无法发布 asp.net 5 应用程序 - 依赖项......无法解决

c# - 有没有办法在 asp.net core 3.1 Rest-API 中使用 Identity Server 功能

c# - 将图像添加到 ASP.net Core

asp.net-core-mvc - 在 Controller 外部访问 HttpContext.Current.User 的新等价物是什么?

razor - 获取脚手架以特定顺序生成字段

c# - 如何在 ASP.NET Core MVC 中请求并显示实时 Web api 数据?

c# - 获取 Windows 机器上的用户列表?

c# - 如何在.NET core 2.0服务中设置响应头

c# - 替换 Net Core 中的 AppDomain