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

End*_*ono 4 asp.net-mvc

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

编辑:

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

Dar*_*rov 9

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

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

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

  • 为什么不使用反射来检查当前操作是否应用了另一个过滤器(例如[DontAuthorize])并且在这种情况下绕过过滤器中的功能?这应该工作正常...... (5认同)