asp.net-mvc - 解析 Controller 和操作上的 FilterAttributes

标签 asp.net-mvc

我想这样做:

[RequiresAuthentication(CompanyType.Client)]
public class FooController
{    
     public ActionResult OnlyClientUsersCanDoThis()

     public ActionResult OnlyClientUsersCanDoThisToo()

     [RequiresAuthentication]
     public ActionResult AnyTypeOfUserCanDoThis()

你可以明白为什么这行不通。在第三个操作中, Controller 级过滤器将阻止非客户端。我想“解决”冲突的过滤器。我希望更具体的过滤器( Action 过滤器)始终获胜。这看起来自然且直观。

曾几何时,filterContext 公开了执行操作的 MethodInfo。那会让这件事变得很容易。我考虑使用路线信息自己进行一些反射(reflection)。这是行不通的,因为该操作可能会重载,而且我无法判断当前正在执行哪个操作。

另一种方法是在 Controller 级别或操作级别设置过滤器范围,但不要混合,这会产生大量额外的属性噪音。

最佳答案

我们正在研究一种公开其他过滤器的方法,但没有 promise 。

将过滤器应用于 Controller 并不是真正的“范围”,它只是将其应用于所有过滤器的简写。不幸的是,这意味着您不能包含除一项操作之外的所有操作。执行此操作的一种简单方法是将该方法放入另一个 Controller 中。您甚至可以仅针对这种情况添加自定义路由,这样 URL 就不必更改。

关于asp.net-mvc - 解析 Controller 和操作上的 FilterAttributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/274039/

相关文章:

javascript - bootstrap-select:选项未出现在下拉列表中

c# - AutoMapper 中 IValueFormatter 的替代方案是什么?

javascript - 使用 JavaScript 隐藏特定日期的面板

c# - 单元测试 HtmlHelper 扩展方法失败

c# - 如何在 ASP.NET MVC 中确定 Controller 的区域

javascript - MVC 手动序列化复杂对象或模型绑定(bind)

asp.net-mvc - 如何防止 Fluent Validation 在特定条件下验证模型

c# - StructureMap 在 HttpContext 上抛出 ArgumentNullException

c# - MVC 中的奇怪异常

c# - ASP.NET MVC 单例或静态类来传递数据?