Laravel8集成 Geetest 极验验证码

简述

之前项目使用的行为验证一直是Geetest,但是最近升级了Laravel 框架8版本,发现之前的Geetest集成包无法使用了,安装composer 包 会报错说版本不支持8以上的版本,经过苦苦寻找发现了一个大佬集成的composer包,经测试可以使用。 地址:https://packagist.org/packages/zbrettonye/geetest  建议阅读原项目的 README 文件。 下面简单介绍一下该工具包的使用。

 

注册极验账号

首先需要到 极验 网站注册账号,然后新建一个应用,获取到 ID 和 KEY,留作备用,后台管理页面如下。

Laravel8集成 Geetest 极验验证码_第1张图片

Laravel8集成 Geetest 极验验证码_第2张图片

安装

在项目地址输入命令

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() !!}

如下:

{!! Geetest::render() !!}

效果如下:

Laravel8集成 Geetest 极验验证码_第3张图片Laravel8集成 Geetest 极验验证码_第4张图片Laravel8集成 Geetest 极验验证码_第5张图片

 

服务端验证

同样你也可以自己自行发挥了。

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
下载网址:https://curl.haxx.se/docs/caextract.html
Laravel8集成 Geetest 极验验证码_第6张图片
将下载好的文件放到网站目录下,打开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的绝对路径即可。

 

你可能感兴趣的:(PHP,编程开发,laravel8,geetest,极验验证码,laravel,php)