.Net结合了JwtAuthentication和BasicAuthenticationFilter



我想让我的控制器同时使用令牌和BasicAth。类似的用户可以选择使用两种身份验证中的一种

目前我无法同时使用这两种方法,它要么使用Jwt,要么使用basicAuth,但不能同时使用

如果我把它们都像下面这样,那就没用了。知道我如何让它与一起工作吗

[JwtAuthentication]
[BasicAuthenticationFilter(false)]

您可以执行以下操作。

在程序中。cs

builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = "Custom";
})
.AddPolicyScheme("Custom", "Custom", options =>
{
options.ForwardDefaultSelector = context =>
{
string authHeader = context.Request.Headers["Authorization"];
if (authHeader != null && authHeader.StartsWith("Basic "))
{
return BasicAuth;
}
else
{
return JwtBearerDefaults.AuthenticationScheme;
}
};
})
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
{
// your code for token validation parameters.
})
.AddScheme<AuthenticationSchemeOptions, BasicAuthenticationHandler>(BasicAuth, null);

在控制器中

[Authorize]
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get(){}

并且您必须在需要验证用户名和密码的地方实现BasicAuthenticationHandler。

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新