让我们假设我们正在使用带有“Abc”模式和相应处理程序的身份验证,一切都很好。我们能够简单地保护控制器
[Authorize(AuthenticationSchemes = "Abc", Roles = "admin")]
属性
但现在似乎需要能够使用“Xyz”模式保护控制器的端点(因此请求应该对应于两种方案的需求)。所以,我认为注册新的模式和处理程序足以能够[Authorize]
如下使用并接收AND
逻辑:
[Authorize(AuthenticationSchemes = "Abc", Roles = "admin")]
[Authorize(AuthenticationSchemes = "Xyz")]
public class UserController : ControllerBase
{
}
但相反,对控制器的有效请求会导致“禁止”响应状态(请注意,即使在“未授权”中)。
我也觉得有趣的是,当我们应用[Authorize(AuthenticationSchemes = "Xyz")]
动作方法而不是控制器时 - 一切都按预期工作。
PS:MvcOptions.AllowCombiningAuthorizeFilters
inStartup
已经设置为false
.
我猜想当两个属性都存在于同一(本例中为控制器)级别时,它仍然以某种方式合并授权逻辑。
有谁知道我错过了什么?可能我认为方向是错误的,并且有一种适当的方法来进行多模式身份验证所以,请随时提供您的想法。