我想这样做:
[RequiresAuthentication(CompanyType.Client)]
public class FooController
{
public ActionResult OnlyClientUsersCanDoThis()
public ActionResult OnlyClientUsersCanDoThisToo()
[RequiresAuthentication]
public ActionResult AnyTypeOfUserCanDoThis()
你可以明白为什么这行不通。在第三个操作中,控制器级过滤器将阻止非客户端。我想“解决”冲突的过滤器。我希望更具体的过滤器(动作过滤器)始终获胜。这看起来很自然且直观。
曾几何时,filterContext 公开了执行操作的 MethodInfo。那会让这件事变得很容易。我考虑使用路线信息自己进行一些反思。这是行不通的,因为该操作可能会超载,而且我无法判断当前正在执行的操作是哪一个。
另一种方法是在控制器级别或操作级别设置过滤器范围,但不要混合,这会产生大量额外的属性噪声。
我们正在寻找一种公开其他过滤器的方法,但没有任何承诺。
将过滤器应用于控制器并不是真正的“范围”,它只是将其应用于所有过滤器的简写。不幸的是,这意味着您不能包含除一项操作之外的所有操作。执行此操作的一种简单方法是将该方法放入另一个控制器中。您甚至可以仅针对这种情况添加自定义路由,这样 URL 就不必更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)