【问题标题】:Authorize Attribute Lifecycle授权属性生命周期
【发布时间】:2013-09-27 17:19:35
【问题描述】:

有人能解释一下为什么授权属性生命周期似乎是相对于它所应用的类或方法进行管理的吗?这与相对于请求生命周期进行管理相反。

如果我在类级别装饰控制器,则授权属性构造函数只会在对同一控制器的多个请求中调用一次。如果我装饰每个控制器方法,那么我会为每个调用的控制器方法获得新的授权属性构造函数调用。

这是什么行为?我希望每次请求都会创建授权属性。

【问题讨论】:

  • 你如何确定它在应用于类时只被调用一次? AFAIK,每个请求都会实例化和销毁控制器。它有点必​​须,否则你最终会遇到交叉请求污染。有可能在 Visual Studio 中进行调试时,出于某种原因它绕过了这一点,但如果您最终为真实 IIS 上的每个请求使用相同的控制器实例,那么就会出现问题。
  • 克里斯,我不是在谈论控制器的生命周期。相反,我问的是 AuthorizeAttribute 的生命周期。 AuthorizeAttribute 不是为每个请求创建的,我希望它是。不幸的是,这会导致当前应用程序出现一些问题,因为我们必须在运行时修改角色。

标签: asp.net-mvc authorize-attribute


【解决方案1】:

ASP.NET MVC 将缓存 ActionFilters 并尝试在后续请求中重用它们。实际授权将发生在每个请求上,但构造函数只会在第一个请求时被调用。您不应该在 ActionFilter 中维护任何内部状态。

【讨论】:

  • Mark Olsen 你有参考文献吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 2022-10-06
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多