【问题标题】:ASP.NET MVC: Override authorization filter roles for single actionASP.NET MVC:覆盖单个操作的授权过滤器角色
【发布时间】:2016-03-24 17:26:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 是的,将其应用于该控制器的操作级别

标签: c# asp.net-mvc


【解决方案1】:

您可以按照here 的描述影响应用过滤器的顺序。对于您的用例,将 Order 添加到您的属性中可能会奏效:

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

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

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

编辑

我刚刚发现Order 不会有什么好处。两个过滤器仍然被执行(仅以相反的顺序)。在控制器级别覆盖过滤器:查看this answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 2015-10-30
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多