You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:06:04