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大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- 使用Python进行API调用:面向开发人员的分步指南
- Go工程化(五) API 设计下: 基于 protobuf 自动生成 gin 代码
- Python调用股票API获取实时数据
- API在量子计算中的作用
- API请求 – 什么是API请求?
- 给初学者的RESTful API 安全设计指南!
- 如何在 Facebook Developers 上设置 WhatsApp Cloud API
- 支付网关API如何支持小型企业?
- Python调用免费翻译API实现Excel文件批量翻译
- 为开源项目 go-gin-api 增加 WebSocket 模块
- AI编程的风险,如何毁掉你的 API?
- 使用预约调度API的运输管理