在 https://www.55mx.com/post/219 里有一个Ajax验证方案,但最近captcha升级后,就无法使用了,这里提供另一个验证思路,比前一个的方法更科学有效!
我们通过查看Session 得到下面的代码:
dd(session()->get('captcha')); //取到captcha(新版已加密)
打印session结果:
{
"sensitive":false,
"key":"$2y$10$z.JCCxn4vGa4ugqn1srGReL9UOkx5MBVeeLUM1klF2nrdg8b3vk/u"
}
发现key的内容是通过了PHP的加密处理的。所以这里我们可以通过Laravel的密码验证来处理:
//Ajax验证码
Route::post('captcha', function () {
$result = ['status' => 'error', 'msg' => ''];
$captcha = session()->get('captcha'); //取到captcha(新版已加密)
//Hash校验
if (IlluminateSupportFacadesHash::check(request()->captcha, $captcha['key'])) {
$result['status'] = 'success';
} else {
$result['msg'] = '验证码错误';
}
return response()->json($result);
})->name('captcha');
不需要再重新将验证码写入到session。因为我们只读了一次手工的验证通过。
除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/241
《【Laravel实战】Ajax验证captcha 验证码》的网友评论(0)