You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 8 Identity用户扩展字段与注册请求体定制问题

自定义ASP.NET Core 8 Identity注册接口请求体的问题

我已通过继承IdentityUser创建AuthUser类并添加额外字段(FirstName、LastName),数据库表也同步包含了这些字段。但使用MapIdentityApi<AuthUser>()生成的/register路由仅接收邮箱和密码参数,无法传入自定义字段。由于无法直接访问Identity内部控制器,常规修改控制器的方式行不通;且我仅将ASP.NET作为后端使用,官方文档围绕自定义UI的方案并不适用。

相关代码实现

自定义用户类

public class AuthUser: IdentityUser
{
    public static readonly string KEY_PREFIX = "user";

    // 暂未实现自定义ID生成器
    // [Key]
    // public string Id { get; set; } = string.Empty;
    [PersonalData]
    [Required]
    public string FirstName { get; set; } = string.Empty;
    [PersonalData]
    [Required]
    public string LastName { get; set; } = string.Empty;
}

数据库上下文类

public class ApiDbContext: IdentityDbContext<AuthUser>
{
    public ApiDbContext(DbContextOptions<ApiDbContext> options) : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }

    /* ... */
}

Program.cs相关配置

/* ... */

builder.Services.AddAuthorization();

// 配置数据库
builder.Services.AddDbContext<ApiDbContext>(options => options.UseNpgsql(conn));

// 配置身份认证
builder.Services.AddIdentityApiEndpoints<AuthUser>()
    .AddEntityFrameworkStores<ApiDbContext>();
builder.Services.AddAuthentication(IdentityConstants.BearerScheme);

/* ... */

app.MapIdentityApi<AuthUser>();

// 不确定是否需要以下配置
app.UseAuthorization();
app.UseAuthentication();

/* ... */

官方解决方案说明

目前官方暂未支持直接自定义MapIdentityApi生成的注册接口请求体,但该功能已被纳入规划。当前推荐的方案是:

复制IdentityApiEndpointRouteBuilderExtensions.cs的代码,自行修改以获得最大的灵活性和健壮性。

内容的提问来源于stack exchange,提问作者Haeri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:47:36