.Net Core 5与Angular 10集成JWT鉴权未指定认证方案500错误求助
问题根因
报错明确说明没有指定默认认证方案,也没有配置JWT的解析规则,授权中间件无法识别传入的JWT Token,因此抛出异常。
解决方案
1. 确认安装依赖NuGet包
首先确保项目已安装JWT Bearer认证包:
Install-Package Microsoft.AspNetCore.Authentication.JwtBearer
2. 修改Startup.cs认证配置
找到ConfigureServices方法中的services.AddAuthentication();,替换为如下配置:
// 引入以下命名空间 // using Microsoft.AspNetCore.Authentication.JwtBearer; // using Microsoft.IdentityModel.Tokens; services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { // 开启签发者、受众、过期时间、签名校验 ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, // 和你TokenHelper中定义的参数保持一致 ValidIssuer = TokenHelper.Issuer, ValidAudience = TokenHelper.Audience, IssuerSigningKey = new SymmetricSecurityKey(Convert.FromBase64String(TokenHelper.Secret)), // 允许的时间偏移,可根据需求调整 ClockSkew = TimeSpan.Zero }; });
3. 调整Postman请求格式
你当前将Token放在自定义的token请求头中,JWT Bearer中间件默认不会读取该字段,需要按标准格式传递Token:
- 方式1:在Postman请求的
Authorization标签中,类型选择Bearer Token,将生成的JWT字符串填入输入框 - 方式2:手动添加请求头:
Authorization: Bearer 你的JWT字符串
配置完成后即可正常访问带[Authorize]特性的接口,也可通过HttpContext.User.Claims直接读取Token中携带的用户ID、角色等信息。
内容的提问来源于stack exchange,提问作者Mostafa Desoky
相关产品推荐
相关产品推荐

