2010-06-25 86 views
5

我使用.NET mvc2作为我的应用程序。我想对我的操作进行一些自定义授权。我搜索了一下,似乎有两个选项可用。授权过滤器vs动作过滤器

  • 在onActionExecuting自定义操作过滤器实现逻辑,see this post
  • 子类authorizeattribute或实现Iauthorization接口,并把我的逻辑有

在这里,我的问题是,哪种技术最好有优点和缺点使用每种技术

编辑:此外,我可以重写onActionExecuting和onAuthorization在我的基础控制器,使我的好处访问控制器变量直接年。

+0

您是否发现任何正反​​两面? 现在我正在处理同一个问题。 你的解决方案是什么? – 2011-01-06 13:15:42

+0

使用onActionExecuting也为您提供访问私有成员的好处。而在过滤器中,你可能只能访问公共属性和方法。我使用了AuthorizeAttribute的子类,因为这就是它的作用,并且让你清楚地分离关注点 – 2011-01-07 05:55:11

回答

3

虽然这两个选项都行,最好是继承AuthorizeAttribute这些原因:

  1. 分离的担忧。
  2. MVC为此提供了AuthorizeAttribute(不打架构)。
  3. 授权过滤器首先运行 - 在其他过滤器(每个Pro ASP.NET MVC3框架,页面431)之前运行。这确保如果未经授权的用户访问您的控制器/操作,则不会执行不必​​要的代码。