【问题标题】:How can check whether my hash password store in the right way in database?如何检查我的哈希密码是否以正确的方式存储在数据库中?
【发布时间】:2020-06-29 19:48:34
【问题描述】:

我在 Laravel(管理员、用户)中创建了一个简单的多重身份验证。他们都正常授权用户和管理员登录。

昨天,当我打开管理员登录页面并尝试登录时,它显示了我

这些凭据与我们的记录不符。

我说好的,也许我写的密码不正确。我通过Seed 创建了一个新帐户,如下所示:

AdminSeeder.php

public function run()
{
    Admin::create([
        'name'=>'admin',
        'email'=>'admin@gmail.com',
        'password'=> Hash::make('123456'),
    ]);
}

我再次尝试使用正确的凭据登录,但我收到了相同的错误消息。然后我尝试通过Tinker创建一个新用户,以验证我的Seed是否有错误。我创建了一个新的,然后尝试登录,但我得到了同样的错误。

在我的管理面板中,我为管理员创建了一个页面以添加多个管理员!我再次从我的页面创建一个新的管理员帐户并登录,here it works! 在种子中具有相同的HASH 功能!

接下来,我尝试创建一个新的 Laravel 项目并将我的重要文件移动到新的,同样的事情与新的一样!

我真的不知道发生了什么!当我通过SeedTinker创建新帐户时,我认为哈希密码有问题!

【问题讨论】:

  • 你真的应该检查一下你是否在某个地方没有对他的密码输入两次进行哈希处理,这可能只是导致问题的原因。
  • 我在Admin模式下有这个功能!公共函数 setPasswordAttribute($value) { $this->attributes['password'] = Hash::make($value);有没有可能这会导致这个错误!!
  • 是的,完全正确!因为您曾经将一个已经散列的值作为$value 提供给您的设置器,然后再次将其包含在设置器中。
  • 天哪!!!让我试试!
  • 很高兴为您提供帮助。 :)

标签: php laravel


【解决方案1】:

事实证明,由于 Admin 模型中有一个广泛的自定义密码设置器,密码被哈希了两次。通过删除提到的设置器解决了问题。

【讨论】:

    猜你喜欢
    • 2012-07-28
    • 2021-02-28
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2020-05-13
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多