我正在使用ASP.NET MVC5和Identity 2.0(測試版)。在MVC中更改用戶名5
用戶可以更改用戶名嗎?
我想使用UserManager.UpdateAsync方法拋出一個異常。
Regrads,
Fran。
我正在使用ASP.NET MVC5和Identity 2.0(測試版)。在MVC中更改用戶名5
用戶可以更改用戶名嗎?
我想使用UserManager.UpdateAsync方法拋出一個異常。
Regrads,
Fran。
也許這是不是很漂亮,但試試這個:
db.Database.ExecuteSqlCommand("update AspNetUsers set UserName=" + NewUserName + " where UserName = " + OldUserName);
這很脆弱,因爲它直接依賴於數據庫架構和連接。按照下面的建議使用UserManger更好。 –
更不用說SQL注入的風險了! – Epanoui
是有可能使用UpdateAsync方法,但你需要確保你同時更新電子郵件和用戶名的字段。
var user = userManager.FindById(userId);
user.Email = email;
user.UserName = email;
var updateResult = await userManager.UpdateAsync(user);
此方法成功地爲我
這個工作對我來說:
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");
}
什麼是例外拋出? –