gpt4 book ai didi

aspnetboilerplate - 正确实现忘记密码 AspNetBoilerPlate

转载 作者:行者123 更新时间:2023-12-04 01:04:42 25 4
gpt4 key购买 nike

我使用 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返回

公共(public)虚拟异步任务 ForgotPassword(ForgotPasswordViewModel forgotPasswordModel, string returnUrl = "", string 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("");
}

最佳答案

public class AccountAppService: IAccountAppService 
{
public UserManager UserManager {get; set; }

public async Task SendPasswordResetCode(string emailAddress)
{
var user = await UserManager.FindByEmailAsync(emailAddress);

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) */
}
}

关于aspnetboilerplate - 正确实现忘记密码 AspNetBoilerPlate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57259838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com