在我正在处理的 .NET Core Web 应用程序中,我在应用程序中配置策略时注意到了一些奇怪的事情。该应用程序由多个策略组成,用于确定是否授予用户访问权限。
当我在方法上设置授权属性时,例如[Authorize("foo")]
其背后的政策将被触发一次,这是预期的。
然而,如果我添加一个全局过滤器来确保所有请求都得到授权,事情就会开始出现意外。
我的 ConfigureServices
中的示例代码:
options.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build()));
第一次,请求将按预期根据 "foo"
政策进行检查。 AuthorizationHandlerContext
填充了策略。
成功后,将再次调用策略,但这次包含来自 RequireAuthenticatedUser
的 Startup
策略:
为什么 RequireAuthenticatedUser
策略没有先执行,为什么它在我的 AuthorizationHandler
中执行 2 次评估?
"foo"
"foo"
+ RequireAuthenticatedUser
提前致谢!