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