Мне не удалось переопределить ProtectedPersonalData атрибут UserName.
Я добавил класс LookupProtector, реализующий ILookupProtector и LookupProtectorKeyRing, реализующий ILookupProtectorKeyRing >.
Я добавил класс ApplicationUser, который наследуется от IdentityUser, и присвоил ему свойство UserName без свойства ProtectedPersonalData атрибут …
Код: Выделить всё
public class ApplicationUser : IdentityUser
{
///
/// Gets or sets the user name for this user.
///
public override string UserName { get; set; } = null!;
}
Код: Выделить всё
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
Код: Выделить всё
builder.Services.AddDefaultIdentity(options =>
{
options.SignIn.RequireConfirmedAccount = true;
options.User.RequireUniqueEmail = true;
options.Stores.ProtectPersonalData = true;
}).AddRoles()
.AddEntityFrameworkStores()
.AddPersonalDataProtection();
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddScoped();
Код: Выделить всё
@inject SignInManager SignInManager
@inject UserManager UserManager
Настройки Scaffold:

Я также удалил существующую базу данных, откатил все миграции (включая исходную миграцию удостоверений) а затем добавил одну новую миграцию для всех моделей, созданных на сегодняшний день с помощью этих команд…
Код: Выделить всё
dotnet ef database drop
dotnet ef migrations remove (multiple calls)
dotnet ef migrations add CreateTables
dotnet ef database update
code>.
Можно ли переопределить защищенное поведение по умолчанию в классе, производном от IdentityUser, или мне просто нужно найти способ работать со значениями по умолчанию? Спасибо за любую помощь, которую вы можете предложить.
Я мог бы попытаться обойти эту проблему, добавив свойство UserId в ApplicationUser и попытавшись оставить имя пользователя в основном игнорируется, но я хотел бы найти решение, которое кажется более «правильным», если смогу.
Подробнее здесь: https://stackoverflow.com/questions/784 ... p-net-core