Как сгенерировать ссылку подтверждения по электронной почте с веб-сервера на клиент

У меня есть веб-сервер с asp.net core 2.2 web api и угловой клиент.

Теперь я использую этот код для создания ссылок подтверждения по электронной почте:

var uriBuilder = new UriBuilder("http://example.com/confirmEmail");
var parameters = HttpUtility.ParseQueryString(string.Empty);
parameters["id"] = user.Id.ToString();
parameters["token"] = token;
uriBuilder.Query = parameters.ToString();

Uri finalUrl = uriBuilder.Uri;

Но я думаю, что это не лучшая практика. Как мне сделать это вместо этого?


person AndreyTimofeev    schedule 10.06.2019    source источник


Ответы (1)


Я использую что-то вроде этого. Я думаю, это хороший момент!

var code = await _userManager.GenerateEmailConfirmationTokenAsync(identityUser);
var callbackUrl = Url.Action(
                        "ConfirmEmail",
                        "Account",
                        new { userId = identityUser.Id, code = code },
                        protocol: HttpContext.Request.Scheme);

await emailService.SendEmailAsync(model.Email, "Confirm your account",
                        $"confirm email: <a href='{callbackUrl}'>link</a>");

Извините, я не заметил, что вам нужно использовать абсолютный URL-адрес, но я думаю, что это должно вам помочь. https://stackoverflow.com/a/37609162/8006943

person evilGenius    schedule 10.06.2019
comment
Это не работа для меня. Мой веб-сервер (localhost: 9800) изолирован от Интернета, мой клиент amgular (example.com) направляет запрос на веб-сервер. Ваше решение будет иметь URL-адрес, например localhost: 9800/api/account/confirmemail *****, но мне нужен URL-адрес, например example.com/confirmemail ****. - person AndreyTimofeev; 11.06.2019