Laravel 5 получает электронную почту пользователя из resetpasswordlog через хешированный токен - PullRequest
0 голосов
/ 01 июня 2018

Я хочу получить запись из таблицы resetpasswordlog (обратите внимание, я изменил имя таблицы) в Laravel 5.5 через сгенерированный токен во время забытого пароля.Я не хочу использовать уведомление по умолчанию и вместо этого отправлять пользователям электронные письма.Я использовал Hash :: make ($ token), но это не соответствует ни одной записи в таблице "resetpasswordlog".

// user model
public function sendPasswordResetNotification($token)
{
dd(Hash::make($token));
}

Результат:

$ 2y $ 10$ sBeJOd33E7A10ZSwvVZpFeqNe / Cka2jYLdp4rI8fwIkgIFoJZgY5S

Но в таблице базы данных я вижу, что запись вводится как:

* 1012.

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

1 Ответ

0 голосов
/ 01 июня 2018

Bcrypt генерирует другое хеш-значение для той же входной строки, так как генерирует случайную 128-битную соль во время хеширования, таким образом, значения из Hash::make не будут совпадать.

Вместо этого вы можете использовать метод check , чтобы подтвердить, есть ли совпадение нехешированного токена со значением хешированного токена в базе данных, т. Е.

Hash::check($token, $hashedTokenInDatabase);

Также, из-зак вышесказанному вы не сможете напрямую получать электронную почту пользователя только через токен, вам потребуется поле, через которое вы можете запросить таблицу resetpasswordlog для получения относительного хешированного значения токена.


AВ качестве обходного пути можно было бы расширить класс DatabaseTokenRepository и переопределить его метод getPayload, чтобы токены не хэшировались в базе данных, а электронную почту можно было извлечь из базы данных с помощью соответствующего токена, то есть

return ['email' => $email, 'token' => $token, 'created_at' => new Carbon];

Однако, если безопасность является проблемой, я бы не предложил этот подход из-за пунктов, упомянутых в Если пароль сбрасывается tokБудет ли хешироваться при сохранении в базе данных? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...