Я использую aspnetboilerplate (MVC) и хотел реализовать функцию забытого пароля, чтобы пользователь мог сбрасывать свои собственные пароли, используя ссылку на экране входа в систему.
Я предполагаю, что это сработает, создав код сброса пароля, который затем отправляется пользователю по электронной почте. Пользователь переходит по ссылке и попадает на экран, позволяющий сбросить пароль.
Я застрял на начальном этапе. Я начал с копии действия входа в систему, заметив, что при попытке входа в систему был возвращен объект пользователя. Отсюда я пытаюсь установить код сброса пароля.
[HttpPost]
[UnitOfWork]
public virtual async Task<JsonResult> ForgotPassword(ForgotPasswordViewModel forgotPasswordModel, string returnUrl = "", string returnUrlHash = "")
{
returnUrl = NormalizeReturnUrl(returnUrl);
if (!string.IsNullOrWhiteSpace(returnUrlHash))
{
returnUrl = returnUrl + returnUrlHash;
}
var loginResult = await _logInManager.LoginAsync(forgotPasswordModel.UsernameOrEmailAddress, "ForgotPassword", GetTenancyNameOrNull());
loginResult.User.SetNewPasswordResetCode();
switch (loginResult.Result)
{
case AbpLoginResultType.Success:
return Json(loginResult);
default:
throw _abpLoginResultTypeHelper.CreateExceptionForFailedLoginAttempt(loginResult.Result, forgotPasswordModel.UsernameOrEmailAddress, GetTenancyNameOrNull());
}
}
Проверка таблицы AbpUser после
loginResult.User.SetNewPasswordResetCode ();
Я не вижу кода сброса пароля для пользователя, все они равны нулю.
Может ли кто-нибудь указать мне в правильном направлении.
заранее спасибо
Спасибо за правильный ответ ниже, просто для завершения ниже это именно то, что сработало. Очевидно, игнорируйте возврат json в конце
общедоступная виртуальная асинхронная задача ForgotPassword (ForgotPasswordViewModelhibitedPasswordModel, строка returnUrl = "", строка returnUrlHash = "") {// var user = await GetUserByChecking (emailAddress);
var user = await _userManager.FindByEmailAsync(forgotPasswordModel.UsernameOrEmailAddress);
if (user == null)
{
throw new UserFriendlyException("User not found!");
}
user.SetNewPasswordResetCode();
//Send an email to user with the below password reset code
/* Uri.EscapeDataString(user.PasswordResetCode) */
return Json("");
}