.NET 6 最小 API 端点是否可以具有选择退出授权?

rom*_*zor 11 c# asp.net

我试图编写一个小型 API,其中每个端点默认都应启用身份验证,因为我不想为每个端点重复相同的[Authorize]属性或.RequiresAuthorization()调用。

我做了所有常见的.AddAuthentication(), .AddAuthorization(), .UseAuthentication(), .UseAuthorization(),但无论我如何参数化这些,我都无法获得未经授权的响应,除非我明确地添加该属性。

由于我有更多需要身份验证的端点,所以我更愿意用[AllowAnonymous]

我什至不确定是否可以使用常规 Web API/MVC 来完成,但我当然找不到任何新的最小 API 方法。

elv*_*lic 8

您可以设置 FallBackPolicy 或 DefaultPolicy

services.AddAuthorization(options =>
{
    options.FallbackPolicy = new AuthorizationPolicyBuilder()
      .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
      .RequireAuthenticatedUser()
      .Build();
});
Run Code Online (Sandbox Code Playgroud)

而不仅仅是在公共 api 上使用 AllowAnonymous


Dav*_*idG 6

您可以将该AllowAnonymous属性添加到最小 API 端点,如下所示:

app.MapGet("/hello", [AllowAnonymous] () => "Hello, World!");
Run Code Online (Sandbox Code Playgroud)