Laravel 5 Auth:这些凭据与我们的记录不匹配
Posted
技术标签:
【中文标题】Laravel 5 Auth:这些凭据与我们的记录不匹配【英文标题】:Laravel 5 Auth: These credentials do not match our records 【发布时间】:2015-06-09 17:49:03 【问题描述】:我刚开始使用 Laravel 5,我来自 Laravel 4 环境,所以应该不会太难。
我听说 L5 带有一个整洁的内置身份验证系统。 我已经设置了从数据库到视图的所有内容。
注册过程正常,之后它会自动让我登录。但是当我注销并尝试重新登录时,我收到此错误:
这些凭据与我们的记录不符。
我不确定出了什么问题。我必须手动编写登录控制器还是在 L5 中如何工作?
【问题讨论】:
很可能,您只是输入了错误的密码或电子邮件。尝试重新注册。 您是否正确散列密码?Auth::attempt()
期望它被散列。
在我的情况下,我在创建用户并将password
作为$request->password
传递给它时遇到了这个错误,但是在收集的表单名称中 $request 有不同的密码@ 987654324@
【参考方案1】:
我有同样的问题。我的原因是
我在我的User
模型中定义了setPasswordAttribute
,所以每次我输入纯密码,它在发送到数据库之前都会经过哈希处理。
public function setPasswordAttribute($password)
$this->attributes['password'] = \Hash::make($password);
在我的 db:seed 中,我也在使用 Hash::make("password")
创建一个带有哈希密码的用户。所以 laravel 散列哈希密码:)
在 laravel 版本 5.* 中,您不需要对 Auth 的输入密码进行哈希处理,因为 Auth 自己管理它。您只需通过表单传递csrf_field()
。
【讨论】:
现在 >=5.1 你也可以使用bcrypt($password)
【参考方案2】:
除了 @mervasdayi 解决方案之外,在setPasswordAttribute
中散列密码以避免重新散列问题的好方法可能是:
public function setPasswordAttribute($password)
$this->attributes['password'] = Hash::needsRehash($password) ? Hash::make($password) : $password;
【讨论】:
【参考方案3】:进一步了解@mervasdayi 和 Gerard Reches 的建议。只是想我会记下您需要包含的内容
use Illuminate\Support\Facades\Hash;
添加这些修复程序时,位于 User
模型的顶部。
【讨论】:
【参考方案4】:我认为是稍后,但我找到了两种解决方案来解决这个问题。 首先,如果你使用 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);
希望它可以帮助别人。最好的问候
【讨论】:
以上是关于Laravel 5 Auth:这些凭据与我们的记录不匹配的主要内容,如果未能解决你的问题,请参考以下文章