问题
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.
回答1:
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
回答2:
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");
}
回答3:
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