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
相关产品推荐
相关产品推荐

