I am using ASP.NET MVC5 and Identity 2.0 (beta).
It is possible for users to change the username?
I am trying using UserManager.UpdateAsync method throws an exception.
Regrads,
Fran.
Yes it is possible using the UpdateAsync method but you need to ensure that you update both the email and username fields.
var user = userManager.FindById(userId);
user.Email = email;
user.UserName = email;
var updateResult = await userManager.UpdateAsync(user);
This method works successfully for me
This works for me:
public async Task<ActionResult> ChangeUsername(string value)
{
if (UserManager.Users.Where(x => x.UserName == value).FirstOrDefault() == null) //chk for dupes
{
var user = UserManager.FindById(User.Identity.GetUserId());
user.UserName = value;
var updateResult = await UserManager.UpdateAsync(user);
store.Context.SaveChanges();
await SignInAsync(user,true);//user is cached until logout so do this to clear cache
return Content("true");
}
throw new HttpException(500, "Please select a different username");
}
Aleksey Radzhabov
Maybe it's not so beautiful, but try this:
db.Database.ExecuteSqlCommand("update AspNetUsers set UserName=" + NewUserName + " where UserName = " + OldUserName);
来源:https://stackoverflow.com/questions/21748731/change-username-in-mvc-5