[英]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.