Laravel8集成 Geetest 极验验证码
Laravel8集成 Geetest 极验验证码
之前项目使用的行为验证一直是Geetest,但是最近升级了Laravel 框架8版本,发现之前的Geetest集成包无法使用了,安装composer 包 会报错说版本不支持8以上的版本,经过苦苦寻找发现了一个大佬集成的composer包,经测试可以使用。 地址:packagist.org/packages/zbrettonye/... 建议阅读原项目的 README 文件。 下面简单介绍一下该工具包的使用。
注册极验账号
首先需要到 极验 网站注册账号,然后新建一个应用,获取到 ID 和 KEY,留作备用,后台管理页面如下。
安装
在项目地址输入命令
composer require zbrettonye/geetest
就可以完成该包的安装 或者可以在 composer.json 的 require 中添加
"zbrettonye/geetest": "^1.2"
然后执行
composer update
同样可以完成该包的安装。
配置
注册 ServiceProvider,在 config/app.php 的 providers 中添加 ( 注:laravel6以后无需再自行配置ServiceProvider,框架会自动加载 )
然后执行
php artisan vendor:publish
会生成一个配置文件,config/geetest.php 和视图文件 views/vendor/geetest,视图文件中你可以自定义配置,比如修改一下验证失败后的一些前端操作等。
使用
首先把刚才拿到的 ID 和 KEY 配置到 .env 文件中,因为这两个算私密内容,配置到 .env 文件中可以保证安全性。在 .env 中写入如下两行。
GEETEST_ID=0f1097bef7xxxxxx9afdeced970c63e4
GEETEST_KEY=c070f0628xxxxxxe68e138b55c56fb3b
然后,在任意的视图里,我们只需要调用
{!! Geetest::render() !!}
如下:
<form action="/" method="post"> <input name="_token" type="hidden" value="{{ csrf_token() }}"> <input type="text" name="name" placeholder="name"> {!! Geetest::render() !!} <input type="submit" value="submit"></form>
效果如下:
服务端验证
同样你也可以自己自行发挥了。
use Illuminate\Http\Request; class BaseController extends Controller { /** * @param Request $request */ public function postValidate(Request $request) { $result = $this->validate($request, [ 'geetest_challenge' => 'geetest', ], [ 'geetest' => config('geetest.server_fail_alert') ]); if ($request) { return 'success'; } }}
常见问题
php报错cURL error 60: SSL certificate problem: unable to get local issuer certifica
这是因为没有配置信任的服务器HTTPS验证。默认情况下,cURL被设为不信任任何CAs,因此浏览器无法通过HTTPs访问你服务器。
解决方法:下载一个CA证书 cacert.pem
下载网址:curl.haxx.se/docs/caextract.html
将下载好的文件放到网站目录下,打开php.ini配置文件,找到以下代码
[curl]; A default value for the CURLOPT_CAINFO option. This is required to be an; absolute path.; curl.cainfo =
将curl.cainfo前面的;去掉,改成cacert.pem的绝对路径即可。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: