Невозможно сохранить расширенные свойства пользователя в пользовательском интерфейсе удостоверения .NET 8 (сервер BlazorC#

Место общения программистов C#
Ответить
Anonymous
 Невозможно сохранить расширенные свойства пользователя в пользовательском интерфейсе удостоверения .NET 8 (сервер Blazor

Сообщение Anonymous »

Я хочу расширить Identity User с помощью пользовательских свойств и использовать пользовательский интерфейс Identity для их обновления. Но мне не удается сохранить данные.
Действия по воспроизведению проблемы с использованием версии Visual Studio 17.9.0 Community с .NET SDK v8.0.201:
  • Создайте новое приложение Blazor Wep с .NET 8, отдельными учетными записями, режимом интерактивной визуализации: сервер, расположением интерактивности: глобальным.
  • Изменить строка подключения в /appsettings.json, если необходимо. Моя выглядит так:

Код: Выделить всё

  "ConnectionStrings": {
"DefaultConnection": "Server=localhost\\SQLEXPRESS; Database=ExtendedUserPropertiesDemo2; Trusted_Connection=True; MultipleActiveResultSets=true; TrustServerCertificate=true;"
},
  • С помощью консоли управления пакетами (PMC) примените шаблонную первоначальную миграцию и создайте базу данных, запустив
обновление базы данных
  • Откройте /Data/ApplicationUser.cs и добавьте новые свойства:

    Код: Выделить всё

        public class ApplicationUser : IdentityUser
    {
    public string FirstName { get; set; } = string.Empty;
    public string LastName { get; set; } = string.Empty;
    }
    
  • В PMC создайте новую миграцию, выполнив:
add-migration ApplicationUser_AddNameProps
  • Обновите базу данных еще раз:
обновление базы данных
  • Откройте страницу управления пользователями (/ Components/Account/Pages/Manage/Index.razor)
  • В модели ввода в нижней части файла добавьте те же свойства, которые мы добавили в модель ApplicationUser, поэтому это выглядит так это:

Код: Выделить всё

    private sealed class InputModel
{
[Phone]
[Display(Name = "Phone number")]
public string? PhoneNumber { get; set; }

public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
}
  • Обновите форму, включив в нее поля формы для новых свойств:

Код: Выделить всё


First Name



Last Name


  • В OnInitializedAsync() добавьте:

Код: Выделить всё

    Input.FirstName = user.FirstName;
Input.LastName = user.LastName;

Код: Выделить всё

OnInitializedAsync()
теперь выглядит так:

Код: Выделить всё

protected override async Task OnInitializedAsync()
{
user = await UserAccessor.GetRequiredUserAsync(HttpContext);
username = await UserManager.GetUserNameAsync(user);
phoneNumber = await UserManager.GetPhoneNumberAsync(user);

Input.PhoneNumber ??= phoneNumber;
Input.FirstName = user.FirstName;
Input.LastName = user.LastName;
}
  • В OnValidSubmitAsync() добавьте:

Код: Выделить всё

    user.FirstName = Input.FirstName;
user.LastName = Input.LastName;
await UserManager.UpdateAsync(user);

Код: Выделить всё

OnValidSubmitAsync()
теперь выглядит так:

Код: Выделить всё

private async Task OnValidSubmitAsync()
{
if (Input.PhoneNumber != phoneNumber)
{
var setPhoneResult = await UserManager.SetPhoneNumberAsync(user, Input.PhoneNumber);
if (!setPhoneResult.Succeeded)
{
RedirectManager.RedirectToCurrentPageWithStatus("Error: Failed to set phone number.", HttpContext);
}
}

user.FirstName = Input.FirstName;
user.LastName = Input.LastName;
await UserManager.UpdateAsync(user);

await SignInManager.RefreshSignInAsync(user);
RedirectManager.RedirectToCurrentPageWithStatus("Your profile has been updated", HttpContext);
}
  • Запустите приложение.
  • Зарегистрируйте пользователя и подтвердите учетную запись.
  • Войдите в систему и получите доступ к странице управления пользователями (/Account/Manage), щелкнув в меню свой зарегистрированный адрес электронной почты.
  • Введите данные в поле FirstName. Поля формы , LastName и PhoneNumber. Нажмите «Сохранить».
  • Обратите внимание, что номер телефона сохраняется, а имена — нет.
Выполнено Я пропустил шаг? Как это должно быть сделано?

Подробнее здесь: https://stackoverflow.com/questions/780 ... zor-server
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»