隱形 reCaptcha 是谷歌基於 reCaptcha v2(No captcha)——使用者只需要點選“我不是機器人”的按鈕來證明自己是確確實實的人類而最佳化改進的一個版本,不需要與使用者互動,頁面後臺自發執行驗證。
隱形 reCaptcha,顧名思義便是與傳統相比不再嵌入驗證碼框與使用者互動以供驗證。同時,頁面底部將展示一個logo註明當前頁面使用到此技術(當然不想要也可以將其隱藏,但不推薦)。
簡單的頁面樣例:
本文將介紹基於 laravel 快速整合隱形 reCaptcha。
安裝
composer require albertcht/invisible-recaptcha
將下述服務提供者新增到 app/config/app.php
的 providers
陣列中。
AlbertCht\InvisibleReCaptcha\InvisibleReCaptchaServiceProvider::class
配置
前提:谷歌網站申請 API 金鑰。
切記,申請時應當選擇隱形 reCaptcha。
當專案基本部署完成後,在根目錄下的 .env
檔案中新增:
INVISIBLE_RECAPTCHA_SITEKEY={siteKey}
INVISIBLE_RECAPTCHA_SECRETKEY={secretKey}
INVISIBLE_RECAPTCHA_BADGEHIDE=false
INVISIBLE_RECAPTCHA_DEBUG=false
隱藏頁面底部 logo:INVISIBLE_RECAPTCHA_BADGEHIDE=true
在瀏覽器控制檯上檢視這些 captcha 元素的繫結狀態:INVISIBLE_RECAPTCHA_DEBUG=true
使用
頁面顯示 reCaptcha:
{!! app('captcha')->render(); !!}
自定義語言外掛:
{!! app('captcha')->render($lang = null); !!}
驗證:
在 rule 驗證陣列中新增 'g-recaptcha-response' => 'required|captcha'
:
$validate = Validator::make(Input::all(), [
'g-recaptcha-response' => 'required|captcha'
]);
詳細文件和程式碼檢視:連結
本作品採用《CC 協議》,轉載必須註明作者和本文連結