DNN изменить имя пользователя без выхода из системы

Я хочу изменить имя пользователя, вошедшего в систему в данный момент (программно), не выходя из системы после этого.

Вот код метода, который я использую

public void ChangeUsername(int userId, string newEmailAddress)
{
    UserController.ChangeUsername(userId, newEmailAddress);
}

Каждый раз, когда я меняю имя пользователя для любого пользователя, пользователю приходилось снова входить в систему после завершения обновления. Как предотвратить такое поведение?

возможно, после изменения имени пользователя выйдите из системы, а затем войдите программно

erw13n 12.05.2019 20:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
212
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

Вот код ДНН

Используя класс UserInfo, вы получите текущую информацию о пользователе, вошедшем в систему, получите идентификатор пользователя, а затем обновите имя пользователя.

var userInfo = UserInfo;
UserController.ChangeUsername(userInfo.UserID, txtNewEmail.Text.Trim());

Таким образом, вы можете изменить имя пользователя, который в данный момент находится в системе.

Ответ принят как подходящий

Вы можете изменить имя пользователя, не заставляя пользователя снова входить в систему, программно войдя в систему после успешного изменения имени пользователя.

//Change the username
UserController.ChangeUsername(userId, email);

//Stay logged in despite username change
var userAfterChange = UserController.GetUserById(PortalSettings.PortalId, userId);

UserController.UserLogin(PortalSettings.PortalId, userAfterChange, PortalSettings.PortalName, userAfterChange.LastIPAddress, false);

Другие вопросы по теме