在ASP.NET Core中使用多策略与JWT的解决方法如下:
Startup.cs
文件中,添加以下引用:using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
ConfigureServices
方法中,配置JWT身份验证服务和策略:public void ConfigureServices(IServiceCollection services)
{
// 添加JWT身份验证服务
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "your_issuer",
ValidAudience = "your_audience",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key"))
};
});
// 添加策略
services.AddAuthorization(options =>
{
options.AddPolicy("Policy1", policy =>
{
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
policy.RequireAuthenticatedUser();
// 添加其他需要的授权要求
});
options.AddPolicy("Policy2", policy =>
{
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
policy.RequireAuthenticatedUser();
// 添加其他需要的授权要求
});
});
// 其他服务的配置
}
[Authorize]
特性添加策略:[Authorize(Policy = "Policy1")]
public IActionResult SomeAction()
{
// 这里只有通过Policy1策略的用户才能访问
return Ok();
}
通过以上步骤,你可以在ASP.NET Core中实现多策略与JWT的授权认证。请注意替换示例代码中的"your_issuer"、"your_audience"和"your_secret_key"为实际的值,并根据需要设置其他授权要求。