我正在创建一个api,该API具有要应用自定义身份验证处理程序的一百个终结点,因此我在Startup.cs中使用了AuthorizeFilter。
services.AddAuthentication(MyCustom1AuthenticationOptions.Scheme)
.AddScheme<MyCustom1AuthenticationOptions, MyCustom1AuthenticationHandler>(MyCustom1AuthenticationOptions.Scheme, options => { });
services.AddMvc(options =>
{
options.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder(MyCustom1AuthenticationOptions.Scheme).RequireAuthenticatedUser().Build()));
}
我现在有两个端点,希望将它们应用于不同的身份验证处理程序。我将方案添加到了Startup.cs
services.AddAuthentication(MyCustom1AuthenticationOptions.Scheme)
.AddScheme<MyCustom1AuthenticationOptions, MyCustom1AuthenticationHandler>(MyCustom1AuthenticationOptions.Scheme, options => { })
.AddScheme<MyCustom2AuthenticationOptions, MyCustom2AuthenticationHandler>(MyCustom2AuthenticationOptions.Scheme, options => { })
在端点上,我添加了Authorize属性和列出的新方案。
[HttpGet()]
[Authorize(AuthenticationSchemes = MyCustom2AuthenticationOptions.Scheme)]
public ActionResult<MyReturnObject> GetMyObject(){....}
现在的问题是,在调用此端点时,两个身份验证处理程序都被调用了。有没有办法不为此端点运行“全局”身份验证处理程序?