ASP.NET Core 2.0: как обновить расширенные свойства IDentityUser? - PullRequest
0 голосов
/ 31 мая 2018

Это проект, созданный с использованием шаблона MVC ASP.NET Core Web Application.Персональный выбран для аутентификации.

Я расширяю IDentityUser, чтобы добавить свойства, такие как название, учреждение, имя, фамилия, имя.Я могу зарегистрировать нового пользователя с этими расширенными свойствами.Однако я также хочу, чтобы пользователь мог обновлять эти свойства после входа в систему.

Исходное свойство IDentityUser, как и PhoneNumber, обновляется с помощью приведенного ниже кода скаффолда.

var phoneNumber = user.PhoneNumber;
if (model.PhoneNumber != phoneNumber)
{
    var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, model.PhoneNumber);
    if (!setPhoneResult.Succeeded)
    {
        throw new ApplicationException($"Unexpected error occurred setting phone number for user with ID '{user.Id}'.");
    }
}

Кажется, мне также нужнорасширить UserManager для создания таких функций, как

setTitleAsync(TUser user, string title);
setInstitutionAsync(TUser user, string instituion);
setFirstNameAsync(TUser user, string firstName);
setLastNameAsync(TUser user, string lastName);

Я проверил исходный код NET Core 1.0, реализация SetPhoneNumberAsync выглядит следующим образом:

    ThrowIfDisposed();
    var store = GetPhoneNumberStore();
    if (user == null)
    {
        throw new ArgumentNullException(nameof(user));
    }
    await store.SetPhoneNumberAsync(user, phoneNumber, CancellationToken);
    await store.SetPhoneNumberConfirmedAsync(user, false, CancellationToken);
    await UpdateSecurityStampInternal(user);
    return await UpdateUserAsync(user);

Я думаю, что это слишком сложно для такихобщий запрос.Кроме того, я также не знаю, для чего работает xxxStore.

У кого-нибудь есть опыт, чтобы справиться с этим?Большое спасибо.

Еще один способ обновить эти свойства - обновить их путем прямого доступа к БД.Но это не будет соответствовать существующему коду.

...