【问题标题】:Laravel 5: Diagnose password reset token is invalid errorLaravel 5:诊断密码重置令牌无效错误
【发布时间】:2019-04-11 11:27:11
【问题描述】:

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

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

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

【问题讨论】:

    标签: laravel laravel-authentication


    【解决方案1】:

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

    根据哈希验证密码

    check 方法允许您验证给定的纯文本字符串是否对应于给定的哈希值。但是,如果你使用 Laravel 中包含的 LoginController,你可能不需要直接使用它,因为这个控制器会自动调用这个方法:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-09-30
        • 2019-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-21
        • 2016-02-22
        • 2015-05-29
        • 2017-06-02
        相关资源
        最近更新 更多