Yas*_*jaz 1 php validation laravel
我想检查数据库中特定用户的密码是否正确。我想为此使用 Laravel 验证
. 这是我当前的代码
$validator = $request->validate([
'password' => ['required',Rule::exists('users')->where(function ($query) { $query->where('id',Auth::id()); })]
]);
Run Code Online (Sandbox Code Playgroud)
我认为这会生成查询
select count(*) as aggregate from `users` where `password` = 123 and id = 1))
Run Code Online (Sandbox Code Playgroud)
缺少的是我希望对这个密码 (123) 进行散列以进行正确检查。目前,我收到验证错误
选择的密码无效
即使我输入了正确的密码
在这种情况下,您应该Validation Rule按照此说明创建自己的
php artisan make:rule ValidatePassword
Run Code Online (Sandbox Code Playgroud)
在生成的文件中,添加用于接收要验证密码的用户的构造函数方法
public function __construct(User $user)
{
$this->user = $user;
}
Run Code Online (Sandbox Code Playgroud)
您应该在passes方法中编写检查密码的逻辑
public function passes($attribute, $value)
{
return Hash::check($value, $this->user->password);
}
Run Code Online (Sandbox Code Playgroud)
然后,你可以像这样使用它
$validator = $request->validate([
'password' => ['required', new ValidatePassword(auth()->user())]
]);
Run Code Online (Sandbox Code Playgroud)
确保导入User,ValidatePassword和Hash,为简洁起见,我跳过了它。
| 归档时间: |
|
| 查看次数: |
3341 次 |
| 最近记录: |