如果您在使用ASP.NET Identity 3时遇到了"重置密码无效的令牌"问题,可以尝试以下解决方法:
var user = await userManager.FindByEmailAsync(email);
if (user != null)
{
var token = await userManager.GeneratePasswordResetTokenAsync(user);
// 发送包含重置密码令牌的邮件给用户
}
var token = await userManager.GeneratePasswordResetTokenAsync(user);
var resetToken = HttpUtility.UrlEncode(token);
var callbackUrl = $"https://example.com/reset-password?userId={user.Id}&token={resetToken}";
ResetPasswordAsync
方法。[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task ResetPassword(ResetPasswordViewModel model)
{
if (ModelState.IsValid)
{
var user = await userManager.FindByIdAsync(model.UserId);
if (user == null)
{
// 用户不存在
return RedirectToAction("ResetPasswordConfirmation", "Account");
}
var result = await userManager.ResetPasswordAsync(user, model.Token, model.Password);
if (result.Succeeded)
{
// 重置密码成功
return RedirectToAction("ResetPasswordConfirmation", "Account");
}
else
{
// 重置密码失败
ModelState.AddModelError("", "重置密码失败");
}
}
return View(model);
}
通过检查上述步骤,您应该能够解决"重置密码无效的令牌"问题。请注意,这只是一种可能的解决方法,具体的解决方法可能因您的应用程序设计和需求而有所不同。