Laravel 5: Диагностический токен сброса пароля неверен - PullRequest
0 голосов
/ 08 ноября 2018

Я использую систему аутентификации Laravel для отправки приветственного письма всем новым пользователям.В основном это работает нормально, но у меня было несколько единичных случаев, когда я получал ошибку «токен сброса пароля недействителен».

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

Кажется, что токен в URL состоит из 64 шестнадцатеричных символов.Маркер в базе данных начинается с $2y$10$, поэтому я предполагаю, что это вывод функции password_hash.Как я могу перевести с одного на другого?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Альтернативой является проверка того, является ли один эквивалентным другому (это означает, что один является хешированной / не хэшированной версией другого). Для этого вы можете использовать функцию Hash :: check (). Из документов :

Проверка пароля против хэша

Метод check позволяет вам проверить, соответствует ли данная строка открытого текста данному хешу. Однако, если вы используете LoginController, включенный в Laravel, вам, вероятно, не нужно будет использовать это напрямую, так как этот контроллер автоматически вызывает этот метод:

if (Hash::check('plain-text', $hashedPassword)) {
    // The passwords match...
}
0 голосов
/ 08 ноября 2018

Прежде всего я хочу сказать, что токен в URL не является выводом функции password_hash.

Чтобы сравнить токен в URL-адресе и то, что генерируется или сохраняется, вы можете проверить это в своей базе данных. Проверьте таблицу password_resets, проверьте адрес электронной почты пользователя, найдите токен, соответствующий этому адресу электронной почты.

Маркер в URL-адресе должен совпадать с токеном в базе данных для адреса электронной почты.

...