【问题标题】:Authorize filters vs Action Filters授权过滤器与操作过滤器
【发布时间】:2010-06-25 05:58:49
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你有没有发现任何优点和缺点?现在我正在处理同样的问题。你的解决方案是什么?
  • 使用 onActionExecuting 还可以让您访问私有成员。在过滤器中,您可能只能访问公共属性和方法。我使用了 AuthorizeAttribute 的子类,因为这就是它的用途,并为您提供了关注点的清晰分离

标签: .net action-filter authorize-attribute


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-10-27
    • 1970-01-01
    • 2014-03-24
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    相关资源
    最近更新 更多