当你在ASP.NET Core应用程序中遇到“声明未正确获取”的错误时,你可以尝试以下解决方法:
public void ConfigureServices(IServiceCollection services)
{
// ...其他服务配置代码...
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = 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"))
};
});
// ...其他服务配置代码...
}
确保你提供了正确的颁发者(Issuer)和受众(Audience)信息,并使用正确的密钥(Secret Key)。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// ...其他中间件配置代码...
app.UseAuthentication();
// ...其他中间件配置代码...
}
确保在其他中间件之前调用了UseAuthentication方法,以确保认证中间件正确工作。
[Authorize]
public class MyController : Controller
{
// ...控制器代码...
}
确保你在需要身份验证的地方使用了[Authorize]特性。
public void ConfigureServices(IServiceCollection services)
{
// ...其他服务配置代码...
services.AddAuthorization(options =>
{
options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin"));
});
// ...其他服务配置代码...
}
确保你提供了正确的角色和策略信息,并在需要授权的地方使用Authorize特性和角色/策略名称。
通过检查和调整你的认证和授权配置,你可以解决“声明未正确获取”的错误。