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

.NET 8 Identity API端点如何让注册接口支持自定义用户属性?

ASP.NET Core Identity API 自定义注册请求体配置

问题背景

已在ApplicationUser中添加自定义属性(Name、Surname、Experience),数据库表结构生成正确,但默认的Identity注册端点仅接受邮箱和密码参数,无法传入自定义属性,且Username默认与邮箱绑定,无法单独设置。无需弃用新的Identity API端点,通过自定义注册逻辑即可解决。

解决方案步骤

1. 定义自定义注册请求DTO

创建包含所有需要字段的请求模型,用于接收前端传入的注册数据:

public class RegisterRequest
{
    [Required]
    [EmailAddress]
    public string Email { get; set; } = string.Empty;

    [Required]
    [StringLength(100, MinimumLength = 6)]
    public string Password { get; set; } = string.Empty;

    public string? Username { get; set; }
    public string? Name { get; set; }
    public string? Surname { get; set; }
    public float Experience { get; set; }
}

2. 自定义注册端点

在Program.cs中替代默认的注册端点(或在调用app.MapIdentityApi<ApplicationUser>()后覆盖该端点),使用UserManager手动处理用户创建逻辑:

// 替代默认注册端点,或在MapIdentityApi之后添加此自定义端点
app.MapPost("/register", async (RegisterRequest request, UserManager<ApplicationUser> userManager) =>
{
    // 初始化ApplicationUser实例,赋值自定义属性
    var user = new ApplicationUser
    {
        UserName = string.IsNullOrEmpty(request.Username) ? request.Email : request.Username,
        Email = request.Email,
        Name = request.Name,
        Surname = request.Surname,
        Experience = request.Experience
    };

    // 创建用户
    var createResult = await userManager.CreateAsync(user, request.Password);
    if (!createResult.Succeeded)
    {
        return Results.BadRequest(createResult.Errors.Select(err => err.Description));
    }

    // 可选:生成邮箱确认令牌(若启用邮箱验证)
    // var confirmationToken = await userManager.GenerateEmailConfirmationTokenAsync(user);

    // 返回注册成功结果,可按需返回用户ID、令牌等信息
    return Results.Ok(new { UserId = user.Id, Message = "注册成功" });
})
.WithName("CustomRegister")
.WithOpenApi();

3. 保留其他默认Identity端点

其他如登录、刷新令牌、获取用户信息等端点,仍可继续使用app.MapIdentityApi<ApplicationUser>()提供的默认实现,无需全部重写。

说明

默认Identity API的注册端点使用内置请求模型,仅包含邮箱和密码字段,且强制将Username设为邮箱值。通过自定义注册端点,可完全控制请求参数和用户属性赋值逻辑,无需弃用新的Identity API体系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:02:39