我想检查数据库中的特定用户的密码是否正确。我想为此目的使用Laravel验证
。 这是我目前的代码
$validator = $request->validate([
'password' => ['required',Rule::exists('users')->where(function ($query) { $query->where('id',Auth::id()); })]
]);
我认为这会生成查询
select count(*) as aggregate from `users` where `password` = 123 and id = 1))
缺少的是我希望对此密码(123)进行哈希处理以便正确检查。 目前,我收到了验证错误
所选密码无效
即使我输入了正确的密码
答案 0 :(得分:3)
Validation Rule
php artisan make:rule ValidatePassword
在生成的文件中,添加构造函数方法以接收要验证密码的用户
public function __construct(User $user)
{
$this->user = $user;
}
您应该在passes
方法
public function passes($attribute, $value)
{
return Hash::check($value, $this->user->password);
}
然后,您可以像
一样使用它$validator = $request->validate([
'password' => ['required', new ValidatePassword(auth()->user())]
]);
请务必导入User
,ValidatePassword
和Hash
,为简洁起见,我跳过了。