所有文章 > API开发工具 > ASP.NET Core Identity 与 JWT:从安装到配置全流程实战
ASP.NET Core Identity 与 JWT:从安装到配置全流程实战

ASP.NET Core Identity 与 JWT:从安装到配置全流程实战

1. 引言

在现代 Web 应用中,用户认证和授权是必须要解决的问题。ASP.NET Core 提供了强大的 Identity 框架来管理用户、角色与密码安全,再结合 JWT(JSON Web Token)可实现无状态、高性能的令牌验证。本文从零开始,手把手教你如何在 ASP.NET Core 中安装、配置并运行 Identity 与 JWT 验证。


2. 理解 JWT:结构与工作原理


一个标准的 JWT 由三部分组成:

  1. Header(头部):声明签名所用算法等元信息
  2. Payload(载荷):存放实际的声明(Claims),如用户名、Email、角色等
  3. 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

#你可能也喜欢这些API文章!

我们有何不同?

API服务商零注册

多API并行试用

数据驱动选型,提升决策效率

查看全部API→
🔥

热门场景实测,选对API

#AI文本生成大模型API

对比大模型API的内容创意新颖性、情感共鸣力、商业转化潜力

25个渠道
一键对比试用API 限时免费

#AI深度推理大模型API

对比大模型API的逻辑推理准确性、分析深度、可视化建议合理性

10个渠道
一键对比试用API 限时免费