sebastienheyd/hidden-captcha

无 reCaptcha 的 Laravel 隐藏验证码

7.4.2 2023-06-12 09:30 UTC

README

Packagist Build Status StyleCI Scrutinizer Code Quality Laravel Nb downloads MIT License

无 reCaptcha 的 Laravel 隐藏垃圾邮件保护解决方案。基于多种策略,在不影响用户体验的情况下,阻止绝大多数垃圾邮件机器人。

它是如何工作的?

HiddenCaptcha 将使用三个检查规则来阻止垃圾邮件机器人

  • 包含用户 IP、当前会话 ID、当前用户代理和随机字符串的加密令牌
  • 随机命名的必填字段(将使用令牌中的随机字符串)
  • 时间限制(默认为 10 分钟)

令牌通过带有 sha256 签名的 AJAX 调用来检索。

安装

composer require sebastienheyd/hidden-captcha

发布公共资产

php artisan vendor:publish --tag=laravel-assets

Laravel < 5.5 的额外步骤

  • config/app.php 文件的 provider 数组末尾添加 SebastienHeyd\HiddenCaptcha\HiddenCaptchaServiceProvider::class,
  • config/app.php 文件的 aliases 数组末尾添加 "HiddenCaptcha" => SebastienHeyd\HiddenCaptcha\Facades\HiddenCaptcha::class,

使用方法

在您的表单中,在 blade 视图中

@hiddencaptcha

要检查您的表单,请添加以下验证规则

'captcha' => 'hiddencaptcha'

选项

更改时间限制

默认情况下,提交表单的时间限制为 0 秒至 1200 秒(10 分钟)。超出此范围,hiddencaptcha 不会验证表单。

可以通过在验证规则中声明来更改这些限制,例如

$rules = ['captcha' => 'hiddencaptcha:5,2400'];

您还可以发布配置文件以编辑默认时间限制

php artisan vendor:publish --tag=captcha-config

包更新(Laravel < 8.6.9)

Hidden-captcha 包含一个必须发布的 JS。由于通常需要在包更新时覆盖资产,您可以使用 --force 标志。

php artisan vendor:publish --tag=laravel-assets --force

要自动更新每次包更新时的资产,您可以将此命令添加到项目根目录中 composer.json 文件的 post-update-cmd 中。

{
    "scripts": {
        "post-update-cmd": [
            "@php artisan vendor:publish --tag=laravel-assets --force --ansi"
        ]
    }
}