ASP.NET Core 5 Identity重置密码邮件令牌无效问题求助
密码重置时遇到Invalid token错误,无法解决
点击邮件中的重置密码链接进行密码重置时,遇到**无效令牌(Invalid token)**错误。已尝试编码解码、替换"+"等多种方案,均未在当前场景生效。
忘记密码代码
public IActionResult ForgetPassword() { return View(); } [HttpPost] public async Task<IActionResult> ForgetPassword(ForgetPasswordViewModel forgetPasswordView) { var hasUser = await _userManager.FindByEmailAsync(forgetPasswordView.Email); if (hasUser == null) { ModelState.AddModelError(string.Empty, "Bu email adresine sahip bir kullanıcı bulunamamıştır."); return View(); } string passwordResetToken = await _userManager.GeneratePasswordResetTokenAsync(hasUser); var passwordResetLink=Url.Action("ResetPassword", "Home", new { userId = hasUser.Id, Token = passwordResetToken }, HttpContext.Request.Scheme); await _emailService.SendResetPasswordEmail(passwordResetLink, hasUser.Email); TempData["SuccessMessages"] = "Şifre yenileme linki email adresinize gönderilmiştir."; return RedirectToAction(nameof(ForgetPassword)); }
重置密码代码
public IActionResult ResetPassword(string userId,string token) { TempData["userId"] = userId; TempData["token"] = token; return View(); } [HttpPost] public async Task<IActionResult> ResetPassword(ResetPasswordViewModel request) { var userId = TempData["userId"]; var token = TempData["token"]; if (userId == null || token == null) { throw new Exception("Bir hata meydana geldi."); } var hasUser = await _userManager.FindByIdAsync(userId.ToString()!); if (hasUser == null) { ModelState.AddModelError(String.Empty, "Kullanıcı bulunamamıştır."); } IdentityResult result = await _userManager.ResetPasswordAsync(hasUser, (string)token, request.Password); if (result.Succeeded) { TempData["SuccessMessages"] = "Şifreniz başarı ile değiştirilmiştir."; } else { ModelState.AddModelErrorList(result.Errors.Select(x => x.Description).ToList()); } return View(); }
已查阅StackOverflow相关主题并尝试多种方案,问题仍未解决。
内容的提问来源于stack exchange,提问作者Mukremin Buyukkulekci
相关产品推荐
相关产品推荐

