DNN 在不注销的情况下更改用户名

DNN change username without logging out

我想更改当前登录用户的用户名(以编程方式),而不是在此之后注销用户。

这是我使用的方法代码

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

每次我更改任何用户的用户名时,用户都必须在更新完成后重新登录。 如何防止这种行为?

我知道了 经过多次研究,我发现注销用户是默认的 DNN 行为,这对于让用户使用他的新电子邮件登录并清除 DNN 缓存是有意义的,这样你就可以在任何地方看到这个用户和他的新电子邮件。

我可以覆盖 DNN 行为,但不推荐这样做,更改电子邮件很少发生,所以最好保持这种行为

这是DNN代码

通过使用 class UserInfo,您将获得当前登录的 userInfo,获取 userId,然后更新用户名。

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

通过这种方式,您可以更改当前logged_in用户的用户名。

您可以更改用户名,而无需强制用户重新登录,方法是在成功更改用户名后以编程方式登录。

//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);