我在授权方面苦苦挣扎。我希望有BaseController
定义CRUD操作,只有 Admin 才能访问。然后使用DerivedController
,然后允许超级用户访问。
像这样:
public class BaseController : ApiController
{
[Authorize(Roles = "Admin")]
public void Foo() {...}
}
public class DerivedController : BaseController
{
[Authorize(Roles = "SuperUser")]
public void Foo() { base.Foo(); }
}
上面是一个简化版本,所以这个例子看起来有点奇怪:)。拥有[Authorize(Roles = "Admin, SuperUser")]
的单个控制器不是一个选项。
然而,这不起作用。在尝试以{em>超级用户身份访问Derived.Foo
时,我被拒绝访问。
这种方法不可能吗?
答案 0 :(得分:0)
[Authorize(Roles = "Admin, SuperUser")]
的工作方式是需要使用“Admin”或“SuperUser”。
但是,由于您现在有两个授权属性,因此现在要求“管理员”和“超级用户”。
授予您的超级用户管理员权限应该使您的解决方案成为可能。