如何在核心MVC中重置密码之前验证用户令牌是否有效 Asp.Net?



我正在为我的应用程序使用 Asp.net 核心MVC,我实现了重置密码功能,它工作正常。让我展示一下它是如何实现的。当用户请求重置密码时,应用程序会创建一个令牌,如下所示:

var token = _userManager.GeneratePasswordResetToken(user);

应用程序向用户发送电子邮件,当用户点击链接时,它会出现在用户重置密码的页面上。我正在重置如下:

ChangePasswordAsync(user, token, password);

它工作正常。但是我想在更改密码之前验证令牌是否有效。有什么办法吗?

UserManager有一个公共方法,VerifyUserTokenAsync,这可能是你所追求的。如果您在此处查看源代码,您将看到如何在ResetPasswordAsync中使用它:

VerifyUserTokenAsync(user, Options.Tokens.PasswordResetTokenProvider, ResetPasswordTokenPurpose, token)

因此,它依赖于魔术字符串,但您应该能够使用相同的值来获取真值或假值,例如:

if(await _userManager.VerifyUserTokenAsync(user, _userManager.Options.Tokens.PasswordResetTokenProvider, "ResetPassword", token))
{
await _userManager.ResetPasswordAsync(user, token, password);
}
else
{
// handle a bad token however you see fit...
}

这未经测试,所以我不能保证它按原样工作。

令牌将由标识框架进行验证。所以我想你不需要手动执行此操作。

var result = await _userManager.ResetPasswordAsync(user, token, newPassword);

如果失败,结果将具有描述性消息。

干杯

相关内容

  • 没有找到相关文章

最新更新