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

时间:2015-04-04 23:24:45

标签: php authentication laravel laravel-5

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

我听说L5配有内置的身份验证系统。 我已将所有内容从数据库设置为视图。

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

  

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

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

4 个答案:

答案 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);
}

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