Проблема с сбросом пароля токена идентификации ASP.NET Ядро 3.1

#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(" ", " ");