UserManager.UpdateSecurityStamp还原用户数据

时间:2018-07-26 08:34:28

标签: asp.net-mvc asp.net-identity

我正在使用UpdateSecurityStamp从所有浏览器中注销用户。

我的代码是:

var userManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();

            using (var db = new Entities())
            {
                var user = db.AspNetUsers.FirstOrDefault(x => x.Id.Equals("c0bf0112-c856-4bc9-a29f-0bd28c65bfe9"));
                user.PhoneNumber = "1234"; //old phone number was ""
                db.SaveChanges();
                //phone number is updated in database
            }

            userManager.UpdateSecurityStamp(User.Identity.GetUserId()); //phone number value is reverted

问题: 调用UpdateSecurityStamp之前更新的所有值都将还原。 如果我进入数据库并手动更新了列值,则在调用UpdateSecurityStamp时将其还原。为什么?

1 个答案:

答案 0 :(得分:1)

我不知道为什么它会还原用户数据,但是我发现了一个解决方法。 不用打电话

userManager.UpdateSecurityStamp(userId);

使用

userObject.SecurityStamp = Convert.ToString(Guid.NewGuid());

,即,仅更新用户的安全标记。