【问题标题】:ASP.NET Web API Authorization FilterASP.NET Web API 授权过滤器
【发布时间】:2014-07-18 15:40:24
【问题描述】:

我有一个覆盖OnAuthorization 方法的全局授权过滤器。

在调试时,我看到首先实例化了控制器类,然后调用了OnAuthorization 方法。

这是一种已知行为,因为我在控制器构造函数中有一些代码,如果未经授权就不需要运行。

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 你的构造函数到底在做什么——你确定它没有做太多吗?一般来说,您的构造函数根本不应该处理授权问题。

标签: c# asp.net-web-api filter authorization


【解决方案1】:

动作过滤器在应用它们的动作之前执行。如果您有全局授权过滤器,这意味着它们是全局注册的,您不必使用这些过滤器装饰每个操作,但这不会改变操作过滤器的行为,即在操作之前执行。

Controllers首先被初始化,然后相应的Actions被调用,所以你的授权过滤器将在Controller的Constructor之后和action之前执行。这是 Action 过滤器的设计行为。

如果您想在控制器构造之前执行授权,请尝试通过继承DelegatingHandler 类来创建授权消息处理程序而不是操作过滤器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-02
    • 2013-04-09
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2020-11-12
    相关资源
    最近更新 更多