隐形 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'
]);
详细文档和代码查看:链接
参考:https://laravel-news.com/invisible-recaptcha-integration-with-laravel