Php Laravel 5身份验证:这些凭据与我们的记录不匹配

Php Laravel 5身份验证:这些凭据与我们的记录不匹配,php,authentication,laravel,laravel-5,Php,Authentication,Laravel,Laravel 5,我刚开始学习Laravel5,我来自Laravel4环境,所以应该不会太难 我听说L5带有一个内置的身份验证系统,它很整洁。 从数据库到视图,我都设置好了 注册过程正在正常工作,之后它会自动让我登录。但当我注销并尝试重新登录时,会出现以下错误: 这些凭据与我们的记录不匹配 我不知道怎么了。我是否必须手动编写登录控制器,或者它在L5中如何工作?我也有同样的问题。我的理由是 我在我的User模型中定义了setPasswordAttribute,因此每次我输入普通密码时,它都会在发送到DB之前进行哈希

我刚开始学习Laravel5,我来自Laravel4环境,所以应该不会太难

我听说L5带有一个内置的身份验证系统,它很整洁。 从数据库到视图,我都设置好了

注册过程正在正常工作,之后它会自动让我登录。但当我注销并尝试重新登录时,会出现以下错误:

这些凭据与我们的记录不匹配


我不知道怎么了。我是否必须手动编写登录控制器,或者它在L5中如何工作?

我也有同样的问题。我的理由是 我在我的
User
模型中定义了
setPasswordAttribute
,因此每次我输入普通密码时,它都会在发送到DB之前进行哈希运算

public function setPasswordAttribute($password)
{
    $this->attributes['password'] = \Hash::make($password);
}
在我的db:seed中,我也在用Hash::make(“password”)创建一个具有哈希密码的用户。所以laravel散列了散列密码:)


在LaravelVersion5.*中,您不需要散列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;

在添加这些修复程序时,在您的
用户
模型的顶部。

我认为这是以后的事了,但我找到了两种解决此问题的方法。 首先,如果使用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);
}

希望它能帮助别人。致以最诚挚的问候

您很可能只是输入了错误的密码或电子邮件。尝试再次注册。您是否正确地对密码进行哈希运算
Auth::trunt()
希望对其进行哈希运算。现在>=5.1您也可以使用
bcrypt($password)