ASP.NET Core 中 JWT 身份验证核心是配置 Authentication 与 Authorization 中间件,流程为登录发 Token → 请求带 Token → 中间件自动校验 → 控制器用 [Authorize] 限定访问;需正确注册 JWT Bearer 服务、生成 Token 并设置密钥、签发者等参数,保护接口时结合角色或策略授权,并确保前端请求携带格式正确的 Authorization: Bearer Token 头。

ASP.NET Core 中使用 JWT 进行身份验证和授权,核心是配置 Authentication 和 Authorization 中间件,并正确颁发、验证 Token。关键不在于写多少代码,而在于理解流程:登录发 Token → 请求带 Token → 中间件自动校验 → 控制器用 [Authorize] 限定访问。
启用 JWT 身份验证服务
在 Program.cs(.NET 6+)中注册 JWT Bearer 验证服务,需提供密钥、签发者、受众等基础参数:
密钥必须是至少 256 位的对称密钥(如 new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-32-byte-secret-key-here"))) 指定 ValidateIssuer、ValidateAudience 等为 true 时,Token 中必须包含匹配的 iss 和 aud 字段 设置 ClockSkew 可放宽 Token 过期时间容错(默认 5 分钟,设为 TimeSpan.Zero 表示严格校验)
生成并返回 JWT Token
在登录接口(如 POST /api/auth/login)中,验证用户名密码后手动创建 Token:
用 ClaimsIdentity 或直接构建 Claim[] 数组,例如 new Claim(ClaimTypes.Name, user.Username)、new Claim("role", "admin") 使用 JwtSecurityTokenHandler 创建 Token 对象,设置有效期(Expires)、签名凭证(SigningCredentials) 调用 WriteToken() 得到字符串,通常以 JSON 形式返回:{ "token": "xxx.yyy.zzz" }
保护 API 接口与角色/策略授权
加 [Authorize] 特性即可启用验证;进一步控制权限可结合角色或自定义策略:
[Authorize(Roles = "admin")] 要求用户拥有 role 声明且值为 admin(注意:默认读取 ClaimTypes.Role,若用自定义 key 如 "role",需在添加 JWT 服务时通过 TokenValidationParameters.NameClaimType 和 RoleClaimType 指定) 用 AddAuthorization 注册策略,例如限制仅 VIP 用户:builder.Services.AddAuthorization(options => options.AddPolicy("VipOnly", p => p.RequireClaim("level", "vip"))),然后在控制器上写 [Authorize(Policy = "VipOnly")]
前端请求记得带 Authorization Header
客户端每次请求受保护接口时,必须在 HTTP Header 中带上 Token:
格式固定为:Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... 漏掉 Bearer 前缀(注意空格)会导致 401;Token 过期、签名无效、issuer 不匹配等都会返回 401 或 403 开发调试时可用 Postman 或 curl 快速验证:curl -H "Authorization: Bearer xxx" https://localhost:5001/api/values
基本上就这些。JWT 流程不复杂但容易忽略细节——比如密钥长度不够报错、Claim 类型没对齐导致角色失效、Header 少了空格之类。把验证逻辑拆成“发 Token”和“验 Token”两步理清,再配好中间件和策略,就能稳稳跑起来。
以上就是ASP.NET Core怎么进行身份验证和授权 JWT认证实现教程的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1442973.html
微信扫一扫
支付宝扫一扫