我可以使用不同的角色覆盖asp.net核心的授权吗?

问题描述

[Authorize(Roles = "Admin")] // only admin
public class XController : Controller 
{
    [Authorize(Roles = "Employee")] // only employee
    public ActionResult ActionX() { ... }
}

只有管理员可以访问控制器,只有员工可以访问该方法,我知道这种结构不是最好的示例,但我只是想知道这是否可行! :)

解决方法

您绝对可以-但出于您的理智(和其他开发人员),我将Employee角色切换为Controller级别(最低允许),然后对您的角色进行更严格的授权逐个行动。

直接从MSDN docs开始。

您可以通过在操作级别应用其他角色授权属性来进一步限制访问权限:

[Authorize(Roles = "Administrator,PowerUser")]
public class ControlPanelController : Controller
{
    public ActionResult SetTime()
    {
    }

    [Authorize(Roles = "Administrator")]
    public ActionResult ShutDown()
    {
    }
}