Laravel 5 验证:这些凭据与我们的记录不符

Laravel 5 Auth: These credentials do not match our records

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

听说L5内置了一个很简洁的认证系统。 我已经设置了从数据库到视图的所有内容。

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

These credentials do not match our records.

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

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

public function setPasswordAttribute($password)
{
    $this->attributes['password'] = \Hash::make($password);
}

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

在 laravel 版本 5.* 中,您不需要为 Auth 散列输入密码,因为 Auth 会自行管理它。您只需要通过表单传递 {{csrf_field()}} 即可。

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

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

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

use Illuminate\Support\Facades\Hash;

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

我认为是晚些时候,但我找到了两个解决方案来解决这个问题。 首先,如果你使用 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);
}

希望对大家有所帮助。最好的问候