繁体   English   中英

ASP.NET MVC:覆盖单个操作的授权过滤器角色

[英]ASP.NET MVC: Override authorization filter roles for single action

我有一个像这样注释控制器类的授权过滤器:

[Authenticated(Roles = "read_mail", "contact_user")]
public class MailController : Controller { ... }

但是,有一种操作用户只需要一种权限:

[Authenticated(Roles = "read_mail")]
public ActionResult Inbox() { ... }

由于当前设置,只有注释类的过滤器被确认并执行适当的重定向。 有没有办法仅针对特定操作覆盖它,还是应该从控制器中删除过滤器并为每个操作定义它?

您可以按照 此处所述影响应用过滤器的顺序。 对于您的用例,将Order添加到您的属性可能可以解决问题:

[Authenticated(Roles = "read_mail", "contact_user", Order = 1)]
public class MailController : Controller { ... }

[Authenticated(Roles = "read_mail", Order = 0)]
public ActionResult Inbox() { ... }

具有最低Order的过滤器将首先运行。

编辑

我刚刚发现Order不会有多大好处。 两个过滤器仍会执行(仅以相反的顺序)。 在控制器级别覆盖过滤器:看看这个答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM