ASP.NET Core Identity 与 JWT:从安装到配置全流程实战
作者:xiaoxin.gao · 2025-07-02 · 阅读时间:5分钟
1. 引言 在现代 Web 应用中,用户认证和授权是必须要解决的问题。ASP.NET Core 提供了强大的 […]
文章目录
1. 引言
在现代 Web 应用中,用户认证和授权是必须要解决的问题。ASP.NET Core 提供了强大的 Identity 框架来管理用户、角色与密码安全,再结合 JWT(JSON Web Token)可实现无状态、高性能的令牌验证。本文从零开始,手把手教你如何在 ASP.NET Core 中安装、配置并运行 Identity 与 JWT 验证。
2. 理解 JWT:结构与工作原理

一个标准的 JWT 由三部分组成:
- Header(头部):声明签名所用算法等元信息
- Payload(载荷):存放实际的声明(Claims),如用户名、Email、角色等
- Signature(签名):对前两部分进行签名,保障完整性
客户端登录后获取到 JWT,每次请求将它放入 Authorization: Bearer < token > 头,服务器验证签名并提取声明,实现无状态鉴权。
3. 安装必要的 NuGet 包 @1:16
在项目根目录执行或通过 VS Code、自带终端安装:
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
4. 扩展应用用户模型(AppUser)

新建 Models/AppUser.cs,继承内置 IdentityUser,便于后续扩展自定义字段:
public class AppUser : IdentityUser
{
// 可根据业务需求添加更多属性
// public int RiskLevel { get; set; }
}
5. 配置应用 DbContext 使用 Identity
修改 Data/AppDbContext.cs,继承自 IdentityDbContext < AppUser > 而非普通 DbContext:
public class AppDbContext : IdentityDbContext < AppUser >
{
public AppDbContext(DbContextOptions < AppDbContext > options)
: base(options) { }
// 其他 DbSet < TEntity > …
}
6. 在 Program.cs 中注册 Identity 与 JWT
6.1 添加 Identity 服务与密码策略
builder.Services.AddIdentity < AppUser, IdentityRole > (options = >
{
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireUppercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequiredLength = 12;
})
.AddEntityFrameworkStores < AppDbContext > ()
.AddDefaultTokenProviders();
6.2 添加 EF Core 存储
同上 .AddEntityFrameworkStores < AppDbContext > () 已将 AppDbContext 注入 Identity。
6.3 配置 JWT 验证方案
先在 appsettings.json 中增加配置段:
"Jwt": {
"Issuer": "https://localhost:5246",
"Audience": "https://localhost:5246",
"Key": "请替换为至少512位以上的高强度随机密钥"
}
然后在 Program.cs 中:
var jwtSettings = builder.Configuration.GetSection("Jwt");
var key = Encoding.UTF8.GetBytes(jwtSettings["Key"]);
builder.Services
.AddAuthentication(options = >
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options = >
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = jwtSettings["Issuer"],
ValidateAudience = true,
ValidAudience = jwtSettings["Audience"],
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key)
};
});
6.4 启用中间件

app.UseAuthentication();
app.UseAuthorization();
7. 通过 EF Core 迁移生成表结构

在终端运行:
dotnet ef migrations add AddIdentity
dotnet ef database update
8. 验证结果:检查数据库表
使用 SQL Server Management Studio 或其他工具,可见生成了以下表:
- AspNetUsers
- AspNetRoles
- AspNetUserRoles
- AspNetUserClaims, AspNetRoleClaims
- AspNetUserLogins, AspNetUserTokens
9. 小结与最佳实践
- 分离关注:将用户模型、DbContext、认证配置分模块管理,代码清晰易维护。
- 密钥安全:
Jwt:Key必须为高强度随机值,切勿硬编码或泄露。 - 密码策略:根据安全需求调整
IdentityOptions.Password,平衡易用与安全。 - 无状态鉴权:JWT 让服务器无需存储会话状态,提升可扩展性。
- 定期更新:为 JWT 设置合理过期时间,可配合 Refresh Token 实现更安全的续签。
通过以上步骤,你已完成 ASP.NET Core 中 Identity 与 JWT 的完整集成,具备生产级别的用户认证能力。祝你开发顺利!
原文引自YouTube视频:https://www.youtube.com/watch?v=Pkeu_o8k99Q
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- 为什么要使用Google My Business Reviews API
- 2025年7月第2周GitHub热门API推荐:rustfs/rustfs、pocketbase/pocketbase、smallcloudai/refact
- API设计的首要原则
- 左手用R右手Python系列——百度地图API调用与地址解析/逆解析
- 实测:阿里云百炼上线「全周期 MCP 服务」,AI 工具一站式托管
- 什么是GitHubActions实现开源项目的自动化
- 使用 Whisper API 通过设备麦克风把语音转录为文本
- 如何通过Password Manager(密码管理器)的API调用保护账户安全
- 如何为现代图形API编写渲染器 | Clean Rinse
- Python + BaiduTransAPI :快速检索千篇英文文献(附源码)
- Nexus API 的入门教程与使用指南
- API 规范:设计与最佳实践