Laravel 5 Auth:这些凭据与我们的记录不匹配

Posted

技术标签:

【中文标题】Laravel 5 Auth:这些凭据与我们的记录不匹配【英文标题】:Laravel 5 Auth: These credentials do not match our records 【发布时间】:2015-06-09 17:49:03 【问题描述】:

我刚开始使用 Laravel 5,我来自 Laravel 4 环境,所以应该不会太难。

我听说 L5 带有一个整洁的内置身份验证系统。 我已经设置了从数据库到视图的所有内容。

注册过程正常,之后它会自动让我登录。但是当我注销并尝试重新登录时,我收到此错误:

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

我不确定出了什么问题。我必须手动编写登录控制器还是在 L5 中如何工作?

【问题讨论】:

很可能,您只是输入了错误的密码或电子邮件。尝试重新注册。 您是否正确散列密码? Auth::attempt()期望它被散列。 在我的情况下,我在创建用户并将password 作为$request->password 传递给它时遇到了这个错误,但是在收集的表单名称中 $request 有不同的密码@ 987654324@ 【参考方案1】:

我有同样的问题。我的原因是 我在我的User 模型中定义了setPasswordAttribute,所以每次我输入纯密码,它在发送到数据库之前都会经过哈希处理。

public function setPasswordAttribute($password)

    $this->attributes['password'] = \Hash::make($password);

在我的 db:seed 中,我也在使用 Hash::make("password") 创建一个带有哈希密码的用户。所以 laravel 散列哈希密码:)

在 laravel 版本 5.* 中,您不需要对 Auth 的输入密码进行哈希处理,因为 Auth 自己管理它。您只需通过表单传递csrf_field()

【讨论】:

现在 >=5.1 你也可以使用bcrypt($password)【参考方案2】:

除了 @mervasdayi 解决方案之外,在setPasswordAttribute 中散列密码以避免重新散列问题的好方法可能是:

public function setPasswordAttribute($password)
    $this->attributes['password'] = Hash::needsRehash($password) ? Hash::make($password) : $password;

【讨论】:

【参考方案3】:

进一步了解@mervasdayi 和 Gerard Reches 的建议。只是想我会记下您需要包含的内容

use Illuminate\Support\Facades\Hash;

添加这些修复程序时,位于 User 模型的顶部。

【讨论】:

【参考方案4】:

我认为是稍后,但我找到了两种解决方案来解决这个问题。 首先,如果你使用 laravel 5.3,你可以使用 bcrypt 函数。看下面的函数。这意味着您可以在数组中获取数据。

public function create(array $data)

    return User::create([
        'password' => bcrypt($data['password']),
    ]);

其次,您可以使用 mutator 来修复它:

 public function setPasswordAttribute($password)

    $this->attributes['password'] = \Hash::make($password);

希望它可以帮助别人。最好的问候

【讨论】:

以上是关于Laravel 5 Auth:这些凭据与我们的记录不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:如何更改默认登录错误消息:'这些凭据与我们的记录不匹配'

laravel 5.4 auth 外观不起作用

在 laravel 5.3 中删除哈希进程

Laravel 5 与 PHPMyAdmin 的数据库连接

Laravel如何根据用户模型上的额外标志来防止用户登录?

Laravel 5.3 使用内置的 Auth 组件实现多用户认证功能