Как добавить дополнительные поля при регистрации пользователя?

В моем проекте 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 для аутентификации?


Ответы (0 шт):