SecurityStamp 不会在密码更改时更新

SecurityStamp is not updated on password change

我开发了一个 MVC 5 应用程序,该应用程序使用 ASP.NET 具有自定义用户存储和安全标记的身份。

问题是当我更改用户密码时,使用此调用:

await store.SetPasswordHashAsync(identity, hashedPassword).ConfigureAwait(true);

安全戳未更新。

安全标记仅在用户创建时设置。我创建用户:

await userManager.CreateAsync(identity).ConfigureAwait(true);

其中 identity 是 ApplicationUser 对象。

我该如何解决?

我自己回答。原来我设置密码后应该调用:

userManager.UpdateSecurityStamp(id.ToString());

其中 id 是用户实体的主键,在我的自定义用户存储中是一个整数。

该用户管理器调用导致更改身份的安全标记,并立即调用用户存储的 UpdateAsync 方法将其保存到数据库。

干杯!