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