我刚刚开始使用Laravel 5,我来自Laravel 4环境所以它不应该太难。
我听说L5配有内置的身份验证系统。 我已将所有内容从数据库设置为视图。
注册过程正常,之后会自动登录。但是当我退出并尝试重新登录时,我收到此错误:
这些凭据与我们的记录不符。
我不确定是什么问题。我是否必须手动编写登录控制器或在L5中如何工作?
答案 0 :(得分:16)
我有同样的问题。我的原因是
我在setPasswordAttribute
模型中定义了User
,所以每次输入普通密码时,它都会在发送到数据库之前进行哈希处理。
public function setPasswordAttribute($password)
{
$this->attributes['password'] = \Hash::make($password);
}
在我的db:seed中,我也创建了一个带有Hash::make("password")
哈希密码的用户。所以laravel哈希哈希密码:)
在laravel版本5. *中,您不需要为Auth散列输入密码,因为Auth会自行管理它。你必须通过表格传递{{csrf_field()}}
。
答案 1 :(得分:3)
除了 @mervasdayi 解决方案之外,在setPasswordAttribute
中散列密码以避免重复问题的好方法可能是:
public function setPasswordAttribute($password){
$this->attributes['password'] = Hash::needsRehash($password) ? Hash::make($password) : $password;
}
答案 2 :(得分:2)
继续@mervasdayi& Gerard Reches建议。我只是想记下你需要包含
use Illuminate\Support\Facades\Hash;
在添加这些修补程序时,位于User
模型的顶部。
答案 3 :(得分:0)
我认为它是稍后但我发现了两种解决方案来解决这个问题。 首先,如果使用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);
}
希望它可以帮助别人。最好的问候