6

我在我的应用程序中使用 .NET mvc2。我想要对我的操作进行一些自定义授权。我用谷歌搜索了一下,似乎有两种选择。

  • 在自定义操作过滤器中实现 onActionExecuting 中的逻辑,请参阅这篇文章
  • 子类 authorizeattribute 或实现 Iauthorization 接口并将我的逻辑放在那里

我的问题是哪种技术更可取,以及使用每种技术的优缺点

编辑:此外,我可以在我的基本控制器中覆盖 onActionExecuting 和 onAuthorization ,这让我可以直接访问控制器变量。

4

1 回答 1

6

虽然这两个选项都可以,但最好将 AuthorizeAttribute 子类化,原因如下:

  1. 关注点分离。
  2. MVC 为此目的提供了 AuthorizeAttribute(不要与框架对抗)。
  3. 授权过滤器首先运行——在其他过滤器之前(根据 Pro ASP.NET MVC3 Framework,第 431 页)。如果未经授权的用户点击您的控制器/操作,这可以确保不会执行不必​​要的代码。
于 2011-11-09T14:10:17.977 回答