我试图编写一个小型 API,其中每个端点默认都应启用身份验证,因为我不想为每个端点重复相同的[Authorize]
属性或.RequiresAuthorization()
调用。
我做了所有常见的.AddAuthentication()
, .AddAuthorization()
, .UseAuthentication()
, .UseAuthorization()
,但无论我如何参数化这些,我都无法获得未经授权的响应,除非我明确地添加该属性。
由于我有更多需要身份验证的端点,所以我更愿意用[AllowAnonymous]
我什至不确定是否可以使用常规 Web API/MVC 来完成,但我当然找不到任何新的最小 API 方法。
您可以设置 FallBackPolicy 或 DefaultPolicy
services.AddAuthorization(options =>
{
options.FallbackPolicy = new AuthorizationPolicyBuilder()
.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.Build();
});
Run Code Online (Sandbox Code Playgroud)
而不仅仅是在公共 api 上使用 AllowAnonymous
您可以将该AllowAnonymous
属性添加到最小 API 端点,如下所示:
app.MapGet("/hello", [AllowAnonymous] () => "Hello, World!");
Run Code Online (Sandbox Code Playgroud)