如何从ASP.NET MVC 3中的授权过滤器中排除一个控制器操作?

时间:2011-04-04 11:31:43

标签: asp.net-mvc

在ASP.NET MVC 3中,我可以将AuthorizeAttribute放在Global.asax的RegisterGlobalFilters中,它将适用于所有控制器的操作。但是,如何排除某些控制器操作,以便在用户无法登录的情况下调用这些操作?

编辑:

对不起,还有一个问题,如果我在课堂上添加授权,我该如何排除一个动作?

1 个答案:

答案 0 :(得分:9)

您无法使用全局过滤器执行此操作。正如他们的名字所示=>他们是全球性的。

一种方法是让所有需要授权的控制器都来自一个用[Authorize]属性修饰的公共基本控制器。不需要授权的控制器不会从该基本控制器派生。

ASP.NET MVC 3中的另一种可能性是编写一个基于上下文的自定义IFilterProvider将应用或不应用给定的过滤器。我建议你阅读following blog post