我正在使用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
时将其还原。为什么?
答案 0 :(得分:1)
我不知道为什么它会还原用户数据,但是我发现了一个解决方法。 不用打电话
userManager.UpdateSecurityStamp(userId);
使用
userObject.SecurityStamp = Convert.ToString(Guid.NewGuid());
,即,仅更新用户的安全标记。