Этот токен сброса пароля недействителен что значит

Токен недействителен при сбросе пароля с помощью удостоверения ASP.NET

Я реализовал ASP.NET Identity в своем приложении MVC, скопировав код из шаблонов VS 2013. Основная вещь работает, но мне не удалось заставить работать сброс пароля. Когда я показываю страницу «забытый пароль», создается электронное письмо, содержащее токен. Этот токен возвращается методом:

Когда я нажимаю ссылку, открывается форма для сброса пароля, в которой пользователь может ввести свой адрес электронной почты и новый пароль. Затем выполняется вызов функции смены пароля:

Мне это кажется хорошим, но в результате всегда получается «Недействительный токен», и я не понимаю, почему это так.

Кто-нибудь знает, почему это не работает? И где, черт возьми, хранится токен? Я подумал, что это должно быть в базе данных где-то около таблицы AspNetUsers .

5 ответов

Токен, сгенерированный UserManager в ASP.NET Identity, обычно содержит символы » + «, которые при передаче в качестве строки запроса заменяются на » » (пробел) в URL-адресе. В ResetPassword ActionResult замените » » на » + » следующим образом:

Это должно делать свое дело. У меня была такая же проблема, и я нашел ответ здесь.

Просто хотел добавить, что наиболее распространенной проблемой за пределами кодирования / декодирования HTML является то, что в вашей пользовательской записи в базе данных может отсутствовать SecurityStamp. В ASP.NET Identity есть ошибка, когда одна функция устанавливает значение null при создании токена, тогда как другая при проверке токена проверяет наличие пустой строки.

Читайте также:  Что значит понравиться мужчине как женщина

Если ваш SecurityStamp имеет значение null или пустую строку, это вызовет проблему с недопустимым токеном.

В моем случае это произошло из-за того, что данные в базе данных были неправильно импортированы из другой базы данных. Поле SecurityStamp было пустым, поэтому я получил ошибку неверного токена.

Если ваш SecurityStamp изменится после создания вашего токена, токен также недействителен.

Так, например, вы генерируете свой токен, используя

А потом позвонить

Ваш SecurityStamp обновляется , поэтому токен становится недействительным

Источник

Токен сброса пароля идентификации недействителен

Я пишу MVC 5 и использую Identity 2.0.

Сейчас пытаюсь сбросить пароль. Но я всегда получаю ошибку «недействительный токен» для токена сброса пароля.

И я установил DataProtectorTokenProvider,

Я генерирую сброс пароля перед отправкой почты

Я нажимаю ссылку в почте, получаю токен сброса пароля и использую

Результат всегда ложный, и он говорит «Недействительный токен». Где мне исправить?

4 ответа

UserManager.GeneratePasswordResetTokenAsync() очень часто возвращает строку, содержащую символы «+». Если вы передаете параметры по строке запроса, это является причиной (символ ‘+’ — это пробел в строке запроса в URL-адресе).

Попробуйте заменить пробелы в model.PasswordToken символами «+».

Многие ответы здесь URLEncode токен перед отправкой, чтобы обойти тот факт, что токен (являющийся строкой в ​​кодировке base 64) часто содержит символ ‘+’. Решения также должны учитывать, что токен заканчивается на ‘==’.

Я боролся с этой проблемой, и оказалось, что многие пользователи в большой организации использовали Scanmail Trustwave Link Validator (r), который не симметрично кодировал и декодировал URLEncoded stings в ссылке электронной почты (на момент написания).

Самый простой способ — использовать ответ Матеуша Чисека и отправить токен без URLEncoded и просто заменить символы пробела обратно на +. В моем случае это было сделано в угловом SPA, поэтому Javascript становится $routeParams.token.replace(/ /g,’+’) .

Предостережение здесь будет заключаться в использовании AJAX для отправки токена и развертывания собственного алгоритма синтаксического анализа строки запроса — многие примеры разбивают каждый параметр на ‘=’, который, конечно, не будет включать ‘==’ в конце токена. Легко обойти, используя одно из решений регулярных выражений или ища только 1-й знак ‘=’.

Я обнаружил, что ошибка «Недопустимый токен» также возникает, когда столбец SecurityStamp имеет значение NULL для пользователя в таблице AspNetUsers в базе данных. SecurityStamp не будет NULL с готовым кодом MVC 5 Identity 2.0, однако в нашем коде была обнаружена ошибка при выполнении некоторой настройки AccountController, которая очищала значение в поле SecurityStamp.

Источник

.Net Core токен сброса пароля и токен Identityserver 4 недействительны

Мои приложения и API защищены с помощью IdentityServer 4.

У меня есть централизованный API для управления пользователями (регистрация новых пользователей, обновление, удаление и сброс паролей). Токен, сгенерированный этим api, будет использоваться сервером идентификации для сброса пароля пользователя.

Проблема в том, что я всегда получаю ошибку неверного токена. Я знаю, что это не имеет ничего общего с кодировкой URL, потому что забытый пароль обрабатывается сервером идентификации, а токен, созданный сервером идентификации, работает нормально. Проблема в том, что токен генерируется разными api (даже на одной машине).

Я задумался о создании общего поставщика защиты данных, но не понимаю, как это делается. Как я могу сбросить токен пароля, созданный одним API, принятым другим?

Я использую usermanager Asp Identity для создания токена сброса пароля:

Вот как мой IdentityServer настроен на использование Asp Identity:

И вот как мой UserManagement Api настроен для использования Asp Identity:

2 ответа

Пришлось перейти к другим вопросам, а сейчас вернусь к этому. Я решил эту проблему, убедившись, что все мои API и экземпляр IdentityServer настроены для использования защиты данных ASP.NET Core. Я использую redis в качестве моей распределенной системы кеширования, поэтому мне просто нужно было настроить каждый из моих api и identityserver, и теперь все использует одни и те же ключи при генерации токенов. Вот что я использую в каждом файле startup.cs:

А затем не забудьте использовать сеанс (в API):

Источник

Недопустимый токен сброса пароля удостоверения

Я пишу MVC 5 и использую Identity 2.0.

теперь я пытаюсь сбросить пароль. Но я всегда получаю ошибку «недопустимый токен» для сброса токена пароля.

и я установил DataProtectorTokenProvider,

Я произвести сброс пароля перед отправкой почты

Я нажимаю ссылку в Почте, И я получаю токен passwordreset и использую

результат всегда false, и он говорит «недопустимый токен». Где должен ли я исправить ?

4 ответов

UserManager.GeneratePasswordResetTokenAsync() очень часто возвращает строку, содержащую ‘+’ символов. Если вы передаете параметры по строке запроса, это причина (символ » + » — это пробел в строке запроса в URL-адресе).

попробуйте заменить символы пробела в model.PasswordToken С символы’+’.

и при сбросе пароля действие декодировать токен HttpUtility.UrlDecode(token);

Я обнаружил, что ошибка «недопустимый токен» также возникает, когда столбец SecurityStamp имеет значение NULL для пользователя в таблице AspNetUsers в базе данных. SecurityStamp не будет нулевым с кодом MVC 5 Identity 2.0 из коробки, однако в нашем коде была введена ошибка при выполнении некоторой настройки AccountController, которая очистила значение в поле SecurityStamp.

многие ответы здесь URLEncode маркер перед отправкой, чтобы обойти тот факт, что маркер (являющийся базовой 64 закодированной строкой) часто содержит символ»+». Решения также должны учитывать, что токен заканчивается на’==’.

Я боролся с этой проблемой , и оказалось, что многие пользователи в большой организации использовали Scanmail Trustwave Link Validator (r) , который не был симметрично кодировать и декодировать URLEncoded stings в ссылке электронной почты (во время письменный.)

самый простой способ-использовать ответ Mateusz Cisek и отправить маркер без URLEncoded и просто заменить символы пробела на +. В моем случае это было сделано в угловом СПА, поэтому Javascript становится $routeParams.token.replace(/ /g,’+’) .

предостережение здесь будет, если использовать AJAX для отправки токена и свертывания собственного алгоритма синтаксического анализа строки запроса — многие примеры разделяют каждый параметр на»=», который, конечно, не будет включать «= = » в конце токена. Легко обойти используя одно из решений regex или ища только 1st’=’.

Источник

Laravel — я постоянно получаю «этот токен сброса пароля недействителен», когда пытаюсь сбросить пароль

это мой config/auth.php

при попытке сбросить пароль клиента я получаю сообщение об ошибке «этот токен недействителен».

Это мой ResetsPassword.php -> reset()

Вот запрос на сброс пароля:

1 ответ

я только что установил laravel5, перенес таблицу users и вставил пользователей в таблицу. теперь я хочу изменить пароль с помощью сброса пароля в laravel5. когда вы используете email для сброса пароля, появляется предупреждение bootbox о том, что мы отправили вам по электронной почте ссылку для.

Я пишу тест,который гарантирует, что функция сброса пароля моего приложения работает. Система сброса пароля была создана с помощью команды php artisan make:auth . Чтобы пройти тест, мне нужно автоматизировать запрос GET на /password/reset/ <$token>, где $token -это значение, хранящееся в таблице.

Маркер сброса пароля должен быть сгенерирован до отправки на маршрут password.update . Как правило, это происходит, когда пользователь вводит свой адрес email в форму перед отправкой ссылки сброса пароля.

Для пользовательской реализации вам может потребоваться сгенерировать токен вручную.

EDIT: токен возвращается брокером как не хэшированное значение, в то же время он хранится в базе данных как хэшированное значение. Убедитесь, что значение маркера нехешированной представляется способ reset() в качестве параметра token без подчеркивания, в отличие от CSRF _token .

Кроме того, ваша модель Customer должна расширять Authenticatable .

Похожие вопросы:

Я реализовал ASP.NET Identity в своем приложении MVC, скопировав код из шаблонов VS 2013. Основная вещь работает, но я не смог заставить пароль сброса работать. Когда я показываю страницу forgot.

Я пишу MVC 5 и использую Identity 2.0. Теперь я пытаюсь сбросить пароль. Но я всегда получаю ошибку invalid token для сброса токена пароля. public class AccountController : Controller < public.

Я использую devise gem для аутентификации. В моем приложении admin будет создавать пользователей, поэтому я хочу, чтобы ссылка на сброс пароля пользователя при создании admin создавала.

я только что установил laravel5, перенес таблицу users и вставил пользователей в таблицу. теперь я хочу изменить пароль с помощью сброса пароля в laravel5. когда вы используете email для сброса.

Я пишу тест,который гарантирует, что функция сброса пароля моего приложения работает. Система сброса пароля была создана с помощью команды php artisan make:auth . Чтобы пройти тест, мне нужно.

Я использую уведомление, чтобы отправить email пользователю, что кто-то создал для него учетную запись. Я пытаюсь понять, как отправить им действие на страницу пароля/сброса. Мне нужно добавить.

Мне нужно перезаписать сообщение об ошибке, если токен сброса пароля истек. По умолчанию он показывает токен сброса пароля недействителен, но вместо этого мне нужен другой текст. Я работаю с Laravel.

Я разрабатываю приложение Laravel. Сейчас я настраиваю функцию сброса пароля. Существует проблема с получением маркера сброса пароля обратно из базы данных, поскольку строка маркера изменяется при.

У меня возникла проблема в моем сбросе пароля и я получаю ошибку этого токена сброса пароля недействителен я не могу решить эту проблему: мой контроллер: class ResetPasswordController extends.

у меня возникла эта проблема при попытке сбросить пароль, после установки locale в моих маршрутах/интернете, как это: МАРШРУТЫ/WEB Route::get(‘/’, function () < return.

Источник

Оцените статью