覆盖.Net Core 2.2中端点的全局身份验证

时间:2019-08-22 19:57:56

标签: authentication .net-core

我正在创建一个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(){....}

现在的问题是,在调用此端点时,两个身份验证处理程序都被调用了。有没有办法不为此端点运行“全局”身份验证处理程序?

0 个答案:

没有答案