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... }