Laravel 5:诊断密码重置令牌无效错误

时间:2018-11-07 23:36:28

标签: laravel laravel-authentication

我使用Laravel身份验证系统向所有新用户发送欢迎电子邮件。通常情况下,它可以正常工作,但是我遇到了一些孤立的事件,我收到“密码重置令牌无效”错误。

为了进行诊断,我希望能够将用户URL中提供的字符串(即我通过电子邮件发送给他们的令牌)与password_resets.token字段中存储的值进行手动比较。我该怎么办?

URL中的令牌似乎是64个十六进制字符。数据库中的令牌以$2y$10$开头,因此我假设它是password_hash函数的输出。如何从一个翻译成另一个?

2 个答案:

答案 0 :(得分:0)

首先,我想说的是URL中的标记不是password_hash函数的输出。

要比较URL中的令牌以及生成或存储的令牌,可以从数据库中进行检查。检查password_resets表,检查用户的电子邮件,搜索与该电子邮件地址相对应的令牌。

URL中的令牌应该与电子邮件地址的数据库中的令牌相同。

答案 1 :(得分:0)

另一种方法是检查一个是否与另一个等效(这意味着,如果一个是另一个的哈希/未哈希版本)。为此,您可以使用Hash :: check()函数。来自docs

  

验证哈希密码

     

check方法使您可以验证给定的纯文本字符串是否与给定的哈希相对应。但是,如果您使用的是Laravel随附的LoginController,则可能不需要直接使用它,因为此控制器会自动调用此方法:

if (Hash::check('plain-text', $hashedPassword)) {
    // The passwords match...
}