У меня есть приложение ASP.NET Core 2.1, которое использует ASP.NET Core Identity для управления пользователями.Если кто-то забыл свой пароль, я использую Identity SDK для создания токена сброса пароля.Затем я отправляю пользователю ссылку для сброса пароля.Ссылка выглядит следующим образом:
https://mywebsite.com/account/resetpassword/{resetToken}
В позиции "{resetToken}" я размещаю версию маркера сброса в кодировке URL, которую сгенерировал для меня Identity SDK.Кодировка URL необходима, поскольку токен может содержать специальные символы.
Во время тестирования потока забытых паролей на моем локальном компьютере все работало, поэтому после проверки кода я опубликовал его в нашей среде тестирования в Azure.Но во время тестирования на Azure я получаю 404, когда пытаюсь зайти по ссылке для сброса пароля.Сгенерированная ссылка выглядит так:
https://mywebsite.com/account/resetpassword/CfDJ8OdSMUPTC9lCpLB%2fYMsf17DY75oSHdCdv4KL9RTOxbAP2ukPYdX1oY8rh5A%2bRO4p3j8uBVhtSRedi1AoPxVCvNigrcSltViBkCrU9dKRM3YKrE%2fCqPRvZcP%2b9aGdadnnQlFM%2b%2bhcJ8LJHtkmEcEoTkCC0MMfNR3ttDM7L2%2boK1MhKuaqxKKeYH6iyAeK6sJe5g%3d%3d
После некоторого возни с URL, я пришел к выводу, что что-то не так с закодированным знаком + (% 2b).Потому что, если я удаляю его из URL, он успешно возвращает меня на страницу сброса пароля, но, очевидно, выдает ошибку, потому что токен недействителен.
Часть метода принимающего действия выглядит следующим образом:
[HttpGet]
[Route("[controller]/[action]/{*resetToken}")]
public IActionResult ResetPassword(string resetToken)
Я делаю что-то не так или Azure обрабатывает URL-адрес иначе, чем на моем локальном компьютере?