Создайте ссылку для сброса пароля с данными и отправьте на электронную почту ASP.NET Core Web-API - PullRequest
0 голосов
/ 25 марта 2019

В моем старом ядре MVC проекта я сделал ссылку для восстановления пароля следующим образом:

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");
    }

Вопрос по этому разделу: var callbackUrl = Url.Action

Теперь у меня есть API-контроллердля этого метода, а не контроллера MVC.Как я могу создать эту ссылку с данными для контроллера API для этого адреса?

[Route("api/account/reset-password")] 

1 Ответ

1 голос
/ 25 марта 2019

Вы не должны делать это, во-первых.API обычно возвращает что-то вроде JSON, которое веб-пользователь не сможет использовать.Если вы отправите пользователя напрямую в конечную точку API, он по сути будет тупиковым с ответом, который не имеет смысла для него в контексте просмотра веб-страниц.

Если логика для сброса паролясодержится в конечной точке API, тогда у вас должно быть обычное действие MVC, на которое вы отправляете пользователя.Затем это действие будет взаимодействовать с API от имени пользователя и в конечном итоге будет возвращать HTML, с которым он может фактически взаимодействовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...