ASP.. NET Web API授权过滤器

本文关键字:授权 过滤器 API Web NET ASP | 更新日期: 2023-09-27 18:05:46

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

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

这是一个已知的行为,因为我有一些代码在控制器构造函数不需要运行,如果没有授权。

有办法解决这个问题吗?

ASP.. NET Web API授权过滤器

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

控制器首先被初始化,然后相应的动作被调用,所以你的授权过滤器将在控制器的构造函数之后和动作之前执行。这是动作过滤器的行为,因为它们是这样设计的。

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