Laravel 5.4:密码重置令牌与电子邮件令牌不同

4 laravel

升级到 Laravel 5.4 后我有一个小问题

当我重置密码时,电子邮件会生成并完美发送,但是它保存到数据库中的用户记录的令牌如下:

$2y$10$N0WFuqEkEIFto.CazxYLdOUmY1X9tBHfvDn8iWKUdlq2W9uOc00Ku
Run Code Online (Sandbox Code Playgroud)

但是它发送给用户进行密码重置的令牌是:

bc1c82830bc8ad1356aa5e2a2a5a342ae6c6fabd385add503795cca1a1993e15
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么这两个令牌不同。以及我现在如何执行检查以验证数据库中是否存在令牌,因为我需要获取电子邮件地址以发布到重置控制器。

提前谢谢。

Ana*_*mov 6

您存储在数据库中的令牌的散列与用户表中的密码列相同。但是,您收到的令牌没有经过哈希处理。这就是为什么它们不同

由于得到这个密码;

$2y$10$N0WFuqEkEIFto.CazxYLdOUmY1X9tBHfvDn8iWKUdlq2W9uOc00Ku

你必须要做

Hash::make('bc1c82830bc8ad1356aa5e2a2a5a342ae6c6fabd385add503795cca1a1993e15');

并且你不能倒退这个过程。

  • 你不应该再次运行 `Hash::make()` 来比较散列密码和你的明文字符串。这可能在 Laravel 的早期版本中有效,其中散列库使用 SHA256,但在 Laravel 5.4+ 中它使用 bcrypt,它不会连续两次生成完全相同的字符串。您应该使用`Hash::check()` 方法来验证它。 (3认同)