Laravel8整合 Geetest 極驗驗證碼

iGaoWei發表於2020-12-29

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 協議》,轉載必須註明作者和本文連結

相關文章