使用数据创建重置密码链接并发送到电子邮件ASP.NET核心Web API
在我的旧项目MVC core中,我通过以下方式创建了恢复密码的链接:使用数据创建重置密码链接并发送到电子邮件ASP.NET核心Web API,asp.net,asp.net-web-api,asp.net-core,Asp.net,Asp.net Web Api,Asp.net Core,在我的旧项目MVC core中,我通过以下方式创建了恢复密码的链接: if (ModelState.IsValid) { var user = await _userManager.FindByNameAsync(model.Email); if (user == null) { return View("ForgotPasswordConfirmation"); } var cod
if (ModelState.IsValid)
{
var user = await _userManager.FindByNameAsync(model.Email);
if (user == null)
{
return View("ForgotPasswordConfirmation");
}
var code = await _userManager.GeneratePasswordResetTokenAsync(user);
var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
MailSend emailService = new MailSend();
await emailService.SendResetPassword(model.Email,
$"for reset password open a link: <a href='{callbackUrl}'>link</a>");
return RedirectToAction("ForgotPasswordConfirmation", "Account");
}
首先,你不应该这样做。API通常返回类似于JSON的内容,web用户将无法使用它。如果您将用户直接发送到API端点,那么在浏览web的上下文中,用户基本上会被一个对他们毫无意义的响应所扼杀 如果执行密码重置的逻辑包含在API端点中,那么您应该有一个常规的MVC操作发送给用户。然后,此操作将代表用户与API交互,并最终返回一个他们可以实际交互的HTML
[Route("api/account/reset-password")]