MVC 3中的全局区域过滤器

6

由于它似乎没有本地支持,因此在每个区域基础上实施全局过滤器的推荐方法是什么?


将筛选器放在该区域的每个控制器上? :) 但说真的,你是指 ActionFilters 吗? - Sergi Papaseit
我知道,但是从MVC 3开始,ActionFilters是更广泛的IFilter的具体实现。 - Richard Szalay
2个回答

9
它不被原生支持的原因是我们希望阻止开发人员这样做。区域与控制器无关,而是与路由相关联。我们想阻止开发人员尝试将授权或其他安全敏感过滤器应用于区域,因为它们可以被绕过。
有关更多信息,请参见如何在ASP.NET MVC中为整个区域设置授权?

1
有关MVC 4的更新,请参见http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx。 - RickAndMSFT
4
"Areas are not associated with controllers"的意思是不同区域与控制器没有直接关联。有趣的是,我能看到每个区域中都有一个控制器文件夹。控制器总是与某个区域相关联:可以是“根”区域,也可以是自定义的区域。因此,我不同意这种说法。一个常见的例子是创建一个名为“Admin”的区域 - 猜猜你想要全局应用什么过滤器来仅针对该区域。 - Quango
1
@Quango 您的假设是不正确的。请参阅我的答案 https://dev59.com/MXE95IYBdhLWcg3watQ3#2320419,该答案证明控制器并不属于区域。 - Levi
谢谢您的解释:我现在更好地理解了您的意思,并撤回了之前的评论。听起来控制器工厂在匹配东西方面过于热心了。 - Quango

2

应该可以了!想得不错。 - Richard Szalay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接