Токен сброса пароля Laravel отличается, когда он сохраняется в базе данных

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

Я явно генерирую токен сброса пароля следующим образом

$token = app('auth.password.broker')->createToken($user)

Затем я попытался восстановить сброс пароля, используя этот токен.

$password_reset = DB::table('password_resets')
            ->where('token', request('token'))
            ->first();

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

Токен сброса пароля Laravel отличается, когда он сохраняется в базе данных

Почему это происходит и как я могу это исправить?

Почему вы используете token в запросе?

Zakaria Acharki 10.04.2019 13:06

Ok. Я также хочу получить пользователя на основе токена.

Wai Yan Hein 10.04.2019 13:14

Я думаю, что что-то не так с вашей генерацией токенов. сгенерируйте свой токен с помощью str_random(60) и проверьте. надеюсь, это сработает.

Prince Kumar Dwivedi 10.04.2019 13:23
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
679
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Токен хэшируется перед сохранением в базе данных. Он хэшируется в DatabaseTokenRepository в строке 110: 'token' => $this->hasher->make($token).

Вы не сможете выполнять запросы по токену. Например, вы сможете сравнить простое значение токена с хешированным значением с помощью метода check в классе HashManager.

Подскажите, пожалуйста, как получить DatabaseTokenRepository в коде (например, в Model)?

vitasya 15.04.2020 20:22

Не уверен, что вы имеете в виду. Не могли бы вы опубликовать новый вопрос?

D Malan 16.04.2020 14:13

База на Заграничный пасспорт

ваш код должен быть примерно таким
$token = app('auth.password.broker')->createToken($user)->accessToken

Функция createToken, которую он использует, не имеет ничего общего с паспортом. Он возвращает строку.

D Malan 12.04.2019 15:29

Другие вопросы по теме