手动停用密码设置成功后的身份令牌
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);
我在创建帐户后发送一封电子邮件进行确认以设置密码。
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);