Проект ASP.NET Core 2.2 Web API: реализовать URL-адрес обратного вызова для подтверждения электронной почты с использованием конечной точки - PullRequest
1 голос
/ 26 апреля 2019

Как следует из названия, я пытаюсь сделать что-то немного отличающееся от примеров, предоставленных Microsoft (документы), в отношении создания токена подтверждения и последующей отправки пользователю ссылки на электронное письмо с подтверждением.

В настоящее время у меня есть несколько шагов в методе контроллера CreateUserAsync, который создает пользователя, если он успешно генерирует токен подтверждения электронной почты (с помощью метода GenerateEmailConfirmationTokenAsync) - на этом этапе все хорошо, на первый взгляд создается токен.

Затем следующим шагом будет создание ссылки для подтверждения по электронной почте (с использованием таких свойств, как Request.Scheme, Request.Host и т. Д.), Которая будет отправлена ​​пользователю по электронной почте с помощью SendGrid (настроена в соответствии с документацией Microsoft) - снова этот шаг работает отлично. возможность увидеть тестовое письмо в тестовой учетной записи Gmail.

Кажется, проблема в сгенерированном коде (токене) - я пытался использовать метод UrlEncode WebUtility, но это ничего не значит для токена, он остается прежним, и когда я пытался проверить URL, я получил сообщение:

The request filtering module is configured to deny a request that contains a double escape sequence

Любые предложения, как я мог бы реализовать вышеизложенное в проекте веб-API (как в примере с сайтом Microsoft Doc: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/accconfirm?view=aspnetcore-2.2&tabs=visual-studio).

Заранее спасибо.

1 Ответ

1 голос
/ 30 апреля 2019

Я решил эту проблему, изменив POST на GET и используя атрибут [FromQuery], чтобы я мог сгенерировать более традиционный URL-адрес стиля строки запроса, который предоставляет необходимые значения параметров строки запроса.

У меня былочтобы убедиться, что я кодировал токен подтверждения электронной почты при создании URL-адреса подтверждения с помощью метода WebUtility.EncodeUrl, но я обнаружил, что в ASP.NET Core мой метод контроллера (который имеет атрибут [FromQuery]) декодировал входящую строку, поэтому я нене нужно декодировать по прибытии - но это может быть функцией последней версии ASP.NET Core 2.2, которую я использую.

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