Я хочу изменить имя пользователя, вошедшего в систему в данный момент (программно), не выходя из системы после этого.
Вот код метода, который я использую
public void ChangeUsername(int userId, string newEmailAddress)
{
UserController.ChangeUsername(userId, newEmailAddress);
}
Каждый раз, когда я меняю имя пользователя для любого пользователя, пользователю приходилось снова входить в систему после завершения обновления. Как предотвратить такое поведение?
Я понял После многих исследований я обнаружил, что выход пользователя из системы является поведением 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);
возможно, после изменения имени пользователя выйдите из системы, а затем войдите программно