Как добавить дополнительные поля при регистрации пользователя?
В моем проекте ASP.NET Web API у меня есть собственный класс пользователя, который расширяет IdentityUser из Microsoft.AspNetCore.Identity. Вот упрощенная версия моего класса пользователя:
using Microsoft.AspNetCore.Identity;
using System;
namespace Quilt.Models.User
{
public class UserEntity : IdentityUser<Guid>
{
public string FirstName { get; set; }
public string LastName { get; set; }
private DateTime _birthday;
public DateTime Birthday
{
get { return _birthday; }
set
{
_birthday = DateTime.SpecifyKind(value, DateTimeKind.Utc);
}
}
public string? Avatar { get; set; }
public string Gender { get; set; }
}
}
Для аутентификации пользователей я использую ASP.NET Web API Identity .NET 8, и в настоящее время при регистрации обязательными являются только поля электронной почты и пароля. Однако я хочу, чтобы пользователи предоставляли дополнительную информацию, такую как имя, фамилия, дата рождения, аватар (который может быть нулевым), и пол.
Вот конфигурация моего program.cs:
using System.Security.Claims;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Quilt.DataAccess.Data;
using Quilt.Models.User;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<QuiltDbContext>(options =>
options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
builder.Services.AddAuthentication().AddBearerToken(IdentityConstants.BearerScheme);
builder.Services.AddAuthorizationBuilder();
builder.Services.AddDbContext<QuiltDbContext>(options => options.UseInMemoryDatabase("AppDb"));
builder.Services.AddIdentityCore<UserEntity>()
.AddEntityFrameworkStores<QuiltDbContext>()
.AddApiEndpoints();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
app.MapGroup("/my-identity-api").MapIdentityApi<IdentityUser>();
app.MapGet("/", (ClaimsPrincipal user) => $"Привет, {user.Identity!.Name}").RequireAuthorization();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.Run();
Как я могу изменить процесс регистрации, чтобы включить эти дополнительные поля из класса UserEntity? Нужно ли настраивать эндпоинт регистрации, и если да, как это сделать, сохраняя при этом возможность использования ASP.NET Web API Identity для аутентификации?