在ASP.NET MVC 3中,我可以将AuthorizeAttribute放在Global.asax的RegisterGlobalFilters中,它将适用于所有控制器的操作。但是,如何排除某些控制器操作,以便在用户无法登录的情况下调用这些操作?
编辑:
对不起,还有一个问题,如果我在课堂上添加授权,我该如何排除一个动作?
答案 0 :(得分:9)
您无法使用全局过滤器执行此操作。正如他们的名字所示=>他们是全球性的。
一种方法是让所有需要授权的控制器都来自一个用[Authorize]
属性修饰的公共基本控制器。不需要授权的控制器不会从该基本控制器派生。
ASP.NET MVC 3中的另一种可能性是编写一个基于上下文的自定义IFilterProvider将应用或不应用给定的过滤器。我建议你阅读following blog post。