【问题标题】:Laravel 5 How to check password reset token if it exists in password_resetsLaravel 5如何检查密码重置令牌是否存在于密码重置中
【发布时间】:2019-05-02 23:46:58
【问题描述】:

考虑这种情况:

  • 用户通过电子邮件收到重置密码链接。
  • 他单击电子邮件中的“重置密码”链接,由于 URL 中的令牌,他将被重定向到只有他可以访问的密码重置页面。众所周知,此令牌与用户的电子邮件一起存储在 password_resets 表中。

我想让对这个页面的访问只关注点击他电子邮件中链接的用户,所以我必须将 URL 中的令牌与存储在“password_resets”表中的令牌进行比较,并且 Laravel 使用哈希器在存储令牌之前对其进行加密,并且无法比较两个令牌。 你有什么想法可以解决这个问题吗?

【问题讨论】:

  • 为什么需要手动比较token? Laravel 会为你做到这一点。
  • 是的,我知道,但我想将重置密码页面的访问权限授予唯一在我的数据库中存在令牌的用户,让我们举个例子:假设单击重置按钮的用户他保留的电子邮件将被重定向到这个网址:www.example.com/password/reset/123456,我只想让他看到这个页面,因为这个令牌是有效的并且存在于数据库中,并且当其他用户类型:例如 www.example.com/password/reset/123 他会看到一条错误消息,告诉他这个令牌在 DB 中不存在,这就是我想比较两个令牌的原因。
  • 打开链接的人需要再次输入与令牌进行比较的电子邮件地址。如果你能准确猜出令牌,我会给你钱 :) 除非你可以访问同一用户的收件箱。
  • 感谢您的回答,但我不让他重新输入他的电子邮件,我希望他只访问具有 2 个输入的页面,输入密码,就像在 stackoverflow 的系统中实现的那样,

标签: laravel hash passwords


【解决方案1】:

Laravel 中内置了一个 Hash 函数,不确定你的令牌生成器使用的是什么系统,但很可能它使用的是 Laravel 中的 Hash 函数

【讨论】:

    【解决方案2】:

    只需从 url 中获取令牌并对其进行哈希处理,然后将哈希处理后的令牌与数据库中的令牌进行比较。这就是检查密码的方式数据库中的散列密码不可逆您比较散列而不是纯文本密码

    【讨论】:

    • laravel 是否对密码和令牌使用相同的哈希?
    猜你喜欢
    • 2016-01-03
    • 2023-04-10
    • 2020-11-19
    • 1970-01-01
    • 2018-03-12
    • 2016-01-05
    • 2020-07-12
    • 1970-01-01
    • 2015-05-27
    相关资源
    最近更新 更多