在下面的 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/