Я разрабатываю приложение Laravel. Сейчас я настраиваю функцию сброса пароля. Существует проблема с получением токена сброса пароля обратно из базы данных, поскольку строка токена изменяется при сохранении в базе данных с момента его создания.
Я явно генерирую токен сброса пароля следующим образом
$token = app('auth.password.broker')->createToken($user)
Затем я попытался восстановить сброс пароля, используя этот токен.
$password_reset = DB::table('password_resets')
->where('token', request('token'))
->first();
Я не могу восстановить его. Он всегда возвращает ноль. Поскольку значение токена отличается от того, когда оно было сгенерировано, как показано на снимках экрана ниже.
Почему это происходит и как я могу это исправить?
Ok. Я также хочу получить пользователя на основе токена.
Я думаю, что что-то не так с вашей генерацией токенов. сгенерируйте свой токен с помощью str_random(60) и проверьте. надеюсь, это сработает.
Токен хэшируется перед сохранением в базе данных. Он хэшируется в DatabaseTokenRepository
в строке 110: 'token' => $this->hasher->make($token)
.
Вы не сможете выполнять запросы по токену. Например, вы сможете сравнить простое значение токена с хешированным значением с помощью метода check
в классе HashManager
.
Подскажите, пожалуйста, как получить DatabaseTokenRepository в коде (например, в Model)?
Не уверен, что вы имеете в виду. Не могли бы вы опубликовать новый вопрос?
База на Заграничный пасспорт
ваш код должен быть примерно таким$token = app('auth.password.broker')->createToken($user)->accessToken
Почему вы используете
token
в запросе?