在MVC 5中更改用户名

9

我正在使用ASP.NET MVC5和Identity 2.0(beta)。

用户是否可以更改用户名?

我尝试使用UserManager.UpdateAsync方法,但抛出了异常。

谢谢,

Fran。


1
抛出的异常是什么? - Dr Rob Lang
3个回答

12

可以使用UpdateAsync方法实现,但需要确保同时更新电子邮件和用户名字段。

var user = userManager.FindById(userId);
user.Email = email;
user.UserName = email;

var updateResult = await userManager.UpdateAsync(user);

这种方法对我很有效


3
这对我有用:
 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");
        }

-5

也许不是很美观,但试试这个:

db.Database.ExecuteSqlCommand("update AspNetUsers set UserName=" + NewUserName + " where UserName = " + OldUserName);

2
这种方式很脆弱,因为它直接依赖于数据库模式和连接。最好按照下面建议的方法使用“UserManager”。 - Dr Rob Lang
2
更不用提 SQL 注入的风险了! - Epanoui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接