我开发了一个MVC 5应用程序,该应用程序使用带有自定义用户存储和安全标记的 ASP.NET Identity。
问题是,当我使用此调用更改用户的密码时:
await store.SetPasswordHashAsync(identity, hashedPassword).ConfigureAwait(true);
安全标记不会更新。
安全标记仅在用户创建时设置。我创建用户:
await userManager.CreateAsync(identity).ConfigureAwait(true);
其中identity
是应用程序用户对象。
我该如何解决?
我回答自己。原来,在我设置密码后,我应该调用:
userManager.UpdateSecurityStamp(id.ToString());
其中id
是用户实体的主键,在我的自定义用户存储中是一个整数。
该用户管理器调用会导致更改标识的安全标记,并立即调用用户存储的UpdateAsync
方法将其保存到数据库。
干杯!