Забыли пароль в удостоверении aspnet - PullRequest
0 голосов
/ 20 января 2019

Я следил за этой статьей

Похоже, статья не завершена.

Это веб-API, который я бы создал, чтобы создать ссылку на забытый пароль в соответствии со статьей.

   public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = await UserManager.FindByNameAsync(model.Email);
        if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id)))
        {
            // Don't reveal that the user does not exist or is not confirmed
            return View("ForgotPasswordConfirmation");
        }

        var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
        var callbackUrl = Url.Action("**ResetPassword**", "Account", 
    new { UserId = user.Id, code = code }, protocol: Request.Url.Scheme);
        await UserManager.SendEmailAsync(user.Id, "Reset Password", 
    "Please reset your password by clicking here: <a href=\"" + callbackUrl + "\">link</a>");        
        return View("ForgotPasswordConfirmation");
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}

Как мы видим, ResetPassword - это действие URL, которое должно вызываться при нажатии на ссылку в нашей папке входящих сообщений.Однако в статье не дается определение метода для API ResetPassword.

1 Ответ

0 голосов
/ 20 января 2019

должен быть метод ResetPassword внутри вашего контроллера как метод действия.

  //
  // GET: /Account/ResetPassword
  [AllowAnonymous]
  public ActionResult ResetPassword(string code)
  {
     return code == null ? View("Error") : View();
  }

  //
  // POST: /Account/ResetPassword
  [HttpPost]
  [AllowAnonymous]
  [ValidateAntiForgeryToken]
  public async Task<ActionResult> ResetPassword(ResetPasswordViewModel model)
  {
     if (!ModelState.IsValid)
     {
        return View(model);
     }

     var user = await UserManager.FindByNameAsync(model.Email);
     if (user == null)
     {
        // Don't reveal that the user does not exist
        return RedirectToAction("ResetPasswordConfirmation", "Account");
     }
     var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);
     if (result.Succeeded)
     {
        return RedirectToAction("ResetPasswordConfirmation", "Account");
     }
     AddErrors(result);
     return View();
  }

Источник: Ссылка

...