Laravel 的 reCAPTCHA 软件包
发布日期 作者: Paul Redmond
我最近需要一个快速 reCAPTCHA 字段用于一个面向公众的表单,我想要保护它免受机器人垃圾邮件的侵害。过去,我使用过社区中的一个 Laravel 软件包。但是,我又开始寻找不同的 Laravel 软件包,这些软件包使得设置 Google 的 reCAPTCHA 比以前更容易。
如果您有兴趣自己动手,Talevski Igor 写了一篇非常棒的文章,解释了设置 Google ReCaptcha 与 Laravel 集成 的分步过程。
在我介绍我尝试过的软件包之前,我想提一下 Google 发布了 reCAPTCHA V3,它“在没有用户阻碍的情况下为每个请求返回一个分数”。我决定使用带明确 reCAPTCHA 勾选框的 V2,但我计划研究一下 V3,看看它是否符合我的需求。
我尝试了三个不同的软件包,我将简要介绍一下
无验证码 reCAPTCHA
我尝试的第一个选项是 anhskohbo/no-captcha,由 Nguyen Van Anh 开发。这个软件包自 2014 年以来一直存在,并且相对活跃,至少和该软件包在简化 Google 的 reCaptcha 集成方面一样活跃。
您提供 reCAPTCHA 站点和密钥,然后使用软件包的助手渲染出合适的 HTML 来支持 reCaptcha v2
{!! NoCaptcha::display() !!}
要渲染所需的 JS 脚本,请使用以下代码
{!! NoCaptcha::renderJs() !!}
在服务器端,您需要定义以下验证器来验证用户
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha']);
我不确定这个软件包是否支持 Google 的 reCaptcha v3,因为我一直使用的是 V2,所以没有太在意这个问题。
greggilbert/recaptcha
greggilbert/recaptcha 已经不再由最初的开发者维护,我不确定是否还有其他人维护这个软件包。
看起来去年提交的 pull 请求仍然处于打开状态,没有太多进展。自己动手实现 reCAPTCHA 并不复杂,所以个人而言,我不会使用这个软件包,但我还是想提一下,因为我过去用过它。也许社区中有人愿意帮助最初的维护者。
这个软件包在撰写本文时不支持 reCAPTCHA v3。
Laravel ReCAPTCHA
Laravel ReCAPTCHA 是一个针对 Laravel 5 的简单 reCAPTCHA 软件包,支持 Google reCaptcha v3。在撰写本文时,这个软件包不支持自动发现,因此您必须手动配置 facade 和 provider。我确实发送了一个 pull 请求来添加自动发现功能,这个 pull 请求可能在您阅读本文时已经被合并了。
我最终使用了这个软件包,因为我最终计划尝试 reCaptcha V3,而且这个软件包还支持使用可配置的 IP 地址数组跳过验证。
自述文件也没有说明您需要在 <head>
标签中添加 reCAPTCHA javascript,但总体而言,这个软件包使 reCAPTCHA 验证变得非常容易。