Laravel 5: недопустимая ошибка диагностики токена сброса пароля

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

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

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

2 ответа

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

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

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

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

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

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

if (Hash::check('plain-text', $hashedPassword)) {
    // The passwords match...
}
Другие вопросы по тегам