Bcrypt генерирует другое хеш-значение для той же входной строки, так как генерирует случайную 128-битную соль во время хеширования, таким образом, значения из Hash::make
не будут совпадать.
Вместо этого вы можете использовать метод check , чтобы подтвердить, есть ли совпадение нехешированного токена со значением хешированного токена в базе данных, т. Е.
Hash::check($token, $hashedTokenInDatabase);
Также, из-зак вышесказанному вы не сможете напрямую получать электронную почту пользователя только через токен, вам потребуется поле, через которое вы можете запросить таблицу resetpasswordlog для получения относительного хешированного значения токена.
AВ качестве обходного пути можно было бы расширить класс DatabaseTokenRepository и переопределить его метод getPayload
, чтобы токены не хэшировались в базе данных, а электронную почту можно было извлечь из базы данных с помощью соответствующего токена, то есть
return ['email' => $email, 'token' => $token, 'created_at' => new Carbon];
Однако, если безопасность является проблемой, я бы не предложил этот подход из-за пунктов, упомянутых в Если пароль сбрасывается tokБудет ли хешироваться при сохранении в базе данных? .