Ani*_*nge 5 asp.net asp.net-mvc
我试图阻止特定角色(比如 RoleA)中的特定用户访问特定操作。允许匿名用户访问,但不允许 RoleA 中的用户访问该操作。
所以我做了这样的事情:
[AllowAnonymous]
[CustomAuthorize(Roles="RoleB,RoleC")]
public ActionResult MyAction(){
//irrelevant
}
Run Code Online (Sandbox Code Playgroud)
但是,CustomAuthorize当[AllowAnonymous]存在时,动作过滤器永远不会被击中。
那么[AllowAnonymous]覆盖[CustomAuthorize]吗?
回答问题(有点晚,但可能对某人有用):
AllowAnonymous 有以下描述:
表示一个属性,该属性将控制器和操作标记为在授权期间跳过 AuthorizeAttribute。
因此,将它与授权属性一起添加将导致授权代码根本不运行。
这也有这样的效果,如果您将它作为一个属性添加到整个控制器上(即在类级别),那么将单独的 Authorize 属性添加到该控制器上的操作将不起作用。
我不是 100% 确定,但情况可能是这样。如果您考虑控制器级别的 [Authorize] 属性,那么 [AllowAnonymous] 将覆盖它,因此它优先于它。
您能否尝试将它们交换位置,以便 [CustomAuthorize] 位于顶部以查看结果?
问候
| 归档时间: |
|
| 查看次数: |
1902 次 |
| 最近记录: |