首页 文章

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

提问于
浏览
4

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

我听说L5配备了内置的认证系统 . 我已将所有内容从数据库设置为视图 .

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

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

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

4 回答

  • 2

    我遇到过同样的问题 . 我的原因是我在我的 User 模型中定义了 setPasswordAttribute 所以每次输入普通密码,它都会在发送到数据库之前散列 .

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

    在我的db:seed中,我也用 Hash::make("password") 创建了一个带有哈希密码的用户 . 所以laravel哈希哈希密码:)

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

  • 2

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

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

    继@mervasdayi和Gerard Reches建议的那样 . 只是想我会记下你需要包括的内容

    use Illuminate\Support\Facades\Hash;
    

    添加这些修补程序时,在 User 模型的顶部 .

  • 15

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

    希望它可以帮助别人 . 最好的祝福

相关问题