在使用 laravel 开发网站时,经常会遇到垃圾注册和恶意攻击的问题。传统的验证码(如 reCAPTCHA)虽然可以起到一定的防护作用,但用户体验往往不佳。而且,reCAPTCHA 在国内访问不稳定,经常出现无法加载的情况。
最近,我发现了一个非常棒的 laravel 包:
ryangjchandler/laravel-cloudflare-turnstile
。它能让你轻松集成 cloudflare turnstile,这是一个更友好、更注重用户隐私的验证码服务。cloudflare turnstile 的优势在于:
- 无需用户交互: Turnstile 会自动分析用户的行为,判断是否为机器人,大多数情况下用户无需进行任何操作。
- 用户体验更好: 相比传统的验证码,Turnstile 对用户来说几乎是无感的。
- 隐私保护: Cloudflare 承诺保护用户隐私,不会追踪用户行为。
- 国内访问稳定: 由于 Cloudflare 在国内有节点,因此 Turnstile 的访问速度和稳定性都很好。
下面是如何使用
ryangjchandler/laravel-cloudflare-turnstile
的步骤:
1. 安装
使用 Composer 安装这个包:
<pre class="brush:php;toolbar:false;">composer require ryangjchandler/laravel-cloudflare-turnstile
2. 配置
在
config/services.php
文件中添加 Turnstile 的配置信息:
<pre class="brush:php;toolbar:false;">return [ // ..., 'turnstile' => [ 'key' => env('TURNSTILE_SITE_KEY'), 'secret' => env('TURNSTILE_SECRET_KEY'), ], ];
你需要去 Cloudflare 官网创建一个 Turnstile 站点,并获取
TURNSTILE_SITE_KEY
和
TURNSTILE_SECRET_KEY
,然后将它们添加到你的
.env
文件中:
<pre class="brush:php;toolbar:false;">TURNSTILE_SITE_KEY="你的 Site Key" TURNSTILE_SECRET_KEY="你的 Secret Key"
3. 在 Blade 模板中使用
在你的 Blade 模板中,使用
@turnstileScripts()
指令引入 Turnstile 的 JavaScript 脚本,通常放在
<head>
标签内:
<head> @turnstileScripts() {{ $slot }}