Обновить пароль в Asp.net Core 2 Identity - PullRequest
0 голосов
/ 08 декабря 2018

Это мой логин IAction

Контроллер

    [HttpGet]
    [AllowAnonymous]
    public async Task<IActionResult> Login(string returnUrl = null)
    {
        // Clear the existing external cookie to ensure a clean login process
        await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);

        ViewData["ReturnUrl"] = returnUrl;
        return View();
    }

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
    {
        if (ModelState.IsValid)
        {
            var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);

            if (result.Succeeded)
            {

                _logger.LogInformation("User logged in.");
                return RedirectToLocal(returnUrl);
            }
            if (result.RequiresTwoFactor)
            {
                return RedirectToAction(nameof(LoginWith2fa), new { returnUrl, model.RememberMe });
            }
            if (result.IsLockedOut)
            {
                _logger.LogWarning("User account locked out.");
                return RedirectToAction(nameof(Lockout));
            }

            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return View(model);
            }
        }
        return View(model);
    }

Теперь мой текущий адрес электронной почты и пароль

Email: john@gmail.com

Пароль: john@gmail.com123

и я хочу обновить пароль john@gmail.com123 доjohn@gmail.com677 Пожалуйста, помогите мне решить эту проблему, заранее спасибо

1 Ответ

0 голосов
/ 08 декабря 2018

Взгляните на UserManager.GeneratePasswordResetTokenAsync и UserManager.ResetPasswordAsync.

Если сценарий, который вы обрабатываете, относится к «забытому паролю», вы, скорее всего, захотите отправить электронное письмо пользователю со ссылкой.Эта ссылка приведет пользователя к действию, которое принимает маркер сброса в качестве параметра запроса.Затем пользователь может нажать на эту ссылку, чтобы сбросить свой пароль, и оттуда будет сделан звонок ResetPasswordAsync.

Если это сценарий, который вы просматриваете (ваше сообщение не является конкретным), то вам следует ознакомиться с руководством Microsoft здесь: Включить подтверждение учетной записи и восстановление пароля

Некоторый сокращенный код (только для иллюстрации / дидактических целей):

// Get the user by email - may need to be careful of casing here
IdentityUser user = _userManager.Users.First(x => x.Email == "email@example.com");

// Generate the reset token (this would generally be sent out as a query parameter as part of a 'reset' link in an email)
string resetToken = await _userManager.GeneratePasswordResetTokenAsync(user);

// Use the reset token to verify the provenance of the reset request and reset the password.
IdentityResult updateResult = await _userManager.ResetPasswordAsync(user, resetToken, newPassword);
...