手动停用密码设置成功后的身份令牌

To deactivate the identity token on successful password setup manually

我在创建帐户后发送一封电子邮件进行确认以设置密码。

 var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
 var url = Url.Page("/Account/SetupPassword", pageHandler: null, values: new { userId = user.Id, code = code }, protocol: Request.Scheme);
//Code to send email.

该电子邮件有一个 link,点击它会进入设置密码屏幕,您可以在检查令牌是否有效并且工作正常后设置密码。

但是,由于令牌过期时间为 48 小时,因此用户可能会多次点击 link 并被引导至屏幕并在之前设置密码后再次设置密码。第一次成功设置密码后,如何防止令牌处于活动状态?

ASPNetUsers table 中有两列,securitystamp 和 concurrencystamp。删除这些值中的任何一个都可以解决问题吗?

this answer 中选择,您将必须更新 securitystamp 字段以确保令牌被撤销。

您可以使用

明确地做到这一点
await _userManager.UpdateSecurityStampAsync(user);