使用数据创建重置密码链接并发送到电子邮件ASP.NET核心Web API

使用数据创建重置密码链接并发送到电子邮件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

在我的旧项目MVC core中,我通过以下方式创建了恢复密码的链接:

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")]