授权策略评估多次

时间:2021-05-14 19:21:26

标签: asp.net-core .net-core-authorization

在我正在处理的 .NET Core Web 应用程序中,我在应用程序中配置策略时注意到了一些奇怪的事情。该应用程序由多个策略组成,用于确定是否授予用户访问权限。

当我在方法上设置授权属性时,例如[Authorize("foo")] 其背后的政策将被触发一次,这是预期的。

然而,如果我添加一个全局过滤器来确保所有请求都得到授权,事情就会开始出现意外。

我的 ConfigureServices 中的示例代码:

options.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build()));

第一次,请求将按预期根据 "foo" 政策进行检查。 AuthorizationHandlerContext 填充了策略。

enter image description here

成功后,将再次调用策略,但这次包含来自 RequireAuthenticatedUserStartup 策略: enter image description here

为什么 RequireAuthenticatedUser 策略没有先执行,为什么它在我的 AuthorizationHandler 中执行 2 次评估?

  1. "foo"
  2. "foo" + RequireAuthenticatedUser

提前致谢!

0 个答案:

没有答案