.NET 8中如何自定义IdentityUser模型及修改Token过期时间
当然可以直接自定义默认的Identity模型,无需从零搭建认证服务。以下是具体实现步骤:
一、扩展IdentityUser添加自定义个人信息字段
- 创建自定义用户模型,继承
IdentityUser并添加所需字段:
public class AppUser : IdentityUser { public string FullName { get; set; } // 姓名 public string Address { get; set; } // 地址 public string Gender { get; set; } // 性别 }
- 更新DbContext,指定使用自定义用户模型:
public class AppDbContext : IdentityDbContext<AppUser> { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } }
- 修改服务注册代码,将泛型参数替换为自定义模型:
builder.Services.AddIdentityApiEndpoints<AppUser>() .AddEntityFrameworkStores<AppDbContext>();
- 扩展注册请求字段:默认注册端点会自动识别自定义字段,请求示例如下:
{ "email": "user@example.com", "password": "P@ssw0rd!", "fullName": "张三", "address": "北京市朝阳区", "gender": "男" }
- 执行数据库迁移更新表结构:
Add-Migration AddCustomUserFields Update-Database
二、修改Token的expiresIn有效期
通过配置调整AccessToken的生命周期,即可修改expiresIn的值,以下两种方式任选其一:
方式一:配置IdentityOptions
builder.Services.Configure<IdentityOptions>(options => { // 设置为2小时(7200秒),可根据需求调整 options.Tokens.AccessTokenLifetime = TimeSpan.FromHours(2); });
方式二:配合AddIdentityApiEndpoints配置ApiAuthorizationOptions
builder.Services.AddIdentityApiEndpoints<AppUser>() .AddEntityFrameworkStores<AppDbContext>() .AddApiAuthorization(options => { options.AccessTokenLifetime = TimeSpan.FromHours(2); });
修改完成后,登录接口返回的token中expiresIn会更新为设置的秒数(示例中为7200)。
内容的提问来源于stack exchange,提问作者Doğa Koçak
相关产品推荐
相关产品推荐

