创建帐户以设置密码后,我将发送一封电子邮件以确认。
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.
电子邮件中有一个链接,单击该链接会进入“设置密码”屏幕,您可以在其中检查令牌是否有效并且可以正常工作后设置密码。
但是,由于令牌的有效时间为48小时,因此用户可以多次单击该链接,然后直接进入屏幕并在事先设置好密码后再次设置密码。首次成功设置密码后,如何防止令牌激活?
ASPNetUsers表中有两列,securitystamp和concurrencystamp。删除其中任何一个值是否可以解决问题?
答案 0 :(得分:1)
从this answer进行选择,您将必须更新securitystamp字段以确保令牌被吊销。
您可以使用
明确地执行此操作await _userManager.UpdateSecurityStampAsync(user);