Identity Sever 4 - пользователи могут изменить свое имя пользователя / адрес электронной почты - PullRequest
0 голосов
/ 09 марта 2020

Мне нужно дать пользователям, после входа в систему, возможность изменять свое имя пользователя / адрес электронной почты (то же значение) в своей учетной записи ... возможно, аналогично изменению пароля. Я просмотрел документы IdentityServer4, но не упомянул об этом ... Система использует ASP. net Идентификатор для хранения пользовательских данных.

  1. Есть ли опция «из коробки» с IdentityServer4 для изменения имени пользователя? (поскольку это не в документах, я полагаю, нет)

  2. Кто-нибудь может предложить какие-либо примеры этого уже сделано? При поиске на удивление очень мало информации об этом.

  3. Если примеров нет, кто-нибудь может подсказать, с чего начать?

1 Ответ

1 голос
/ 09 марта 2020

Если вы используете Asp. Net Идентификация с IS4, то обновление имени пользователя / адреса электронной почты будет выполняться с помощью методов Asp. Net Идентификация. В частности, это делается через UserManager с использованием двух методов: SetUserNameAsyn c () и SetEmailAsyn c (). Предполагая, что у вас уже есть экземпляр UserManager (обычно используется DI), код будет выглядеть примерно так:

// First get the user, in this example, by ID but also you can use FindByEmailAsync()
var identityUser = await _userManager.FindByIdAsync(id.ToString());

// Change the Username field
var usernameResult = await _userManager.SetUserNameAsync(identityUser, user.Email);

// Change the email field
var emailResult = await _userManager.SetEmailAsync(identityUser, user.Email);

Затем вы можете проверить логические значения usernameResult.Succeeded и emailResult.Succeeded для результата операций. .

Вы можете реализовать это как хотите. В моем случае я создал отдельную конечную точку API «Управление пользователями» в экземпляре IdentityServer4 (который также защищен самим IS4), который выполняет этот код. Если вас интересует аналогичная опция, посмотрите в документации по IS4 о создании собственной конечной точки: http://docs.identityserver.io/en/latest/topics/add_apis.html

...