【发布时间】:2020-04-09 22:44:12
【问题描述】:
我正在编写一个 ABAC 系统,我将在其中根据某些角色/属性/等来决定用户是否可以访问某些数据。但是,有一种特殊的用户(例如超级管理员)应该能够随时随地访问所有内容。我不想遍历所有策略、控制器、操作和方法,并添加对这个特定角色的检查。有没有办法以更集中的方式做到这一点? (例如:在startup)。
如果无法将其添加到全局位置,我正在考虑至少在控制器级别全局添加它:我正在查看 here 并且我看到装饰器 [Authorize(Roles = "Administrator")] 允许您限制访问仅针对管理员用户的某个方法/类。但是,我想要一种“相反的”。我的意思是像 AuthorizeAlways 这样的行为:
[AuthorizeAlways(Roles = "SuperAdministrator")]
public class ControlPanelController : Controller
{
[Authorize(Roles = "SetterUser")]
public ActionResult SetTime()
{
}
[Authorize(Roles = "PowerUser")]
[MinimumAgeAuthorize(50)]
public ActionResult ShutDown()
{
}
}
在这种情况下,我希望SuperAdministrator(即使他们已经 49 岁)可以访问任何地方。 SetterUser 只能访问 SetTime,并且只有 50 岁以上的 PowerUser 才能访问 ShutDown。
我不知道这是否有意义。可能吗?我在哪里可以做到?谢谢!
【问题讨论】:
标签: c# asp.net-core .net-core .net-core-3.0 abac