Ich verwende ASP.NET MVC5 und Identity 2.0 (Beta).Ändern Sie den Benutzernamen in MVC 5
Es ist für Benutzer möglich, den Benutzernamen zu ändern?
Ich versuche mit UserManager.UpdateAsync-Methode löst eine Ausnahme aus.
Fehler,
Fran.
Ich verwende ASP.NET MVC5 und Identity 2.0 (Beta).Ändern Sie den Benutzernamen in MVC 5
Es ist für Benutzer möglich, den Benutzernamen zu ändern?
Ich versuche mit UserManager.UpdateAsync-Methode löst eine Ausnahme aus.
Fehler,
Fran.
Vielleicht ist es nicht so schön, aber versuchen Sie dies:
db.Database.ExecuteSqlCommand("update AspNetUsers set UserName=" + NewUserName + " where UserName = " + OldUserName);
Dies ist fragil, da es direkt vom Datenbankschema und der Verbindung abhängt. Viel besser, den 'UserManger' zu verwenden, wie unten vorgeschlagen. –
Ganz zu schweigen von dem Risiko der SQL-Injektion! – Epanoui
Ja, es ist möglich, die UpdateAsync Methode verwenden, aber Sie müssen sicherstellen, dass Sie beide aktualisieren, um die E-Mail und Benutzerfelder.
var user = userManager.FindById(userId);
user.Email = email;
user.UserName = email;
var updateResult = await userManager.UpdateAsync(user);
Diese Methode funktioniert für mich erfolgreich
Dies funktioniert für mich:
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");
}
Was ist die Ausnahme, die ausgelöst wird? –