#asp.net-core #asp.net-core-webapi #identity #asp.net-core-identity
Вопрос:
Я добавляю опцию «Забыл пароль» в свой проект. Проблема в том, что когда я нажимаю на ссылку, отправленную по электронной почте, токен изменяет некоторые символы. Я проверил элемент ссылки, полученный в электронном письме, и он верен. Проблема в том, что когда я нажимаю на ссылку, чтобы открыть ее, возникает ошибка.
Пример: В правильном маркере буква «а» будет заменена на «А», буква «б» на «В» была изменена на заглавную, как вы можете видеть на рисунке ниже
var token = await _userManager.GeneratePasswordResetTokenAsync(user);
когда вызывается пароль сброса контроллера:
user = await _userManager.FindByEmailAsync(resetPasswordModel.Email);
var resetPassResult = await _userManager.ResetPasswordAsync(user, resetPasswordModel.Token, resetPasswordModel.Password);
if (!resetPassResult.Succeeded) //get invalid token here =/
{
return false;
}
Обновить
я получил исправление с помощью следующего кода:
var token = resetPasswordModel.Token.Replace(" "," ").Replace(" ", " ");
Комментарии:
1. Вы должны закодировать свой токен с помощью
UrlEncoding
алгоритма, прежде чем использовать его в URL.2. Пожалуйста, добавьте свое решение в качестве ответа вместо того, чтобы редактировать его в свой исходный вопрос . Мы стараемся строго придерживаться формата вопросов и ответов здесь. (Нет абсолютно никаких проблем с ответом на ваш собственный вопрос, если вас это беспокоит.)
Ответ №1:
Обновление да, я уже пытался использовать URL-кодирование, но это было бесполезно.
исправьте это с помощью следующего кода
var token = resetPasswordModel.Token.Replace(" "," ").Replace(" ", " ");