是否可以绕过控制器上的授权角色检查,但对操作强制执行角色检查?我花了一些时间研究这个,我发现的所有内容都显示了如何实现 AllowAnonymousAttribute。我目前正在使用 AllowAnonymousAttribute,它非常适合完全绕过操作的授权。那不是我想要的。我有一个需要某些角色的控制器。当请求特定操作时,我想跳过控制器级别的角色,只需验证用户是否具有在操作上指定的角色。
这是一些代码:
[Authorize(Roles="Administrator")]
public class MembersController : ViewApiController<MemberView>
{
// a list of actions....
[Authorize(Roles="ApiUser")]
[HttpPost]
public void AutoPayPost([FromBody] List<AutoPayModel> autoPayList)
{
//....
}
}
问题是我希望只有“ApiUser”角色的用户能够访问“AutoPayPost”操作。我意识到我可以删除类级别的授权属性,然后将其添加到我的控制器上的每个操作方法中,减去“AutoPayPost”操作。我想避免这种情况,因为我的几个控制器继承自一个基类,该基类提供了一长串需要“管理”角色的操作。因此,我必须重写每个基本操作,将 Authorize 属性添加到重写的方法,然后将调用委托回基类。这将起作用,但如果我以后决定向基类添加功能,我将不得不记住返回到 MembersController 并覆盖新方法,添加属性等......
如果最终结果如下所示,那就太好了:
[Authorize(Roles="Administrator")]
public class MembersController : ViewApiController<MemberView>
{
// a list of actions....
[Authorize(Roles="ApiUser", IgnoreControllerRoles=true)]
[HttpPost]
public void AutoPayPost([FromBody] List<AutoPayModel> autoPayList)
{
//....
}
}