andrey-helldar/spammers

此包已被弃用且不再维护。作者建议使用 johannebert/laravel-spam-protector 包。

用于防止垃圾邮件访问 Laravel 应用的简单包

v1.2.1 2020-12-30 19:52 UTC

This package is auto-updated.

Last update: 2020-12-30 20:01:34 UTC


README

用于防止垃圾邮件访问 Laravel 应用的简单包。

spammers

StyleCI Total Downloads Latest Stable Version Latest Unstable Version License

安装

要获取此包的最新版本,只需使用 Composer 引用项目

$ composer require andrey-helldar/spammers

当然,您也可以手动更新 require 块并运行 composer update 命令

{
    "require": {
        "andrey-helldar/spammers": "^1.0"
    }
}

如果您不使用自动发现,请将 ServiceProvider 添加到 config/app.php 文件中的 providers 数组

Helldar\Spammers\ServiceProvider::class,

接下来,设置 config/spammers.php 文件后,调用 php artisan vendor:publishphp artisan migrate 命令来安装迁移

现在,使用 spammer() 助手和 Artisan 命令。

文档

助手存储

将 IP 地址存储在垃圾邮件表中

spammer()
    ->ip('1.2.3.4')
    ->store();
    
// or

spammer('1.2.3.4')->store();

从垃圾邮件表中删除 IP 地址

spammer()
    ->ip('1.2.3.4')
    ->delete();
    
// or

spammer('1.2.3.4')->delete();

从垃圾邮件表中恢复 IP 地址

spammer()
    ->ip('1.2.3.4')
    ->restore();
    
// or

spammer('1.2.3.4')->restore();

检查垃圾邮件表中是否存在 IP 地址

spammer()
    ->ip('1.2.3.4')
    ->exists();
    
// or

spammer('1.2.3.4')->exists();

助手访问

要保存 URL 中的 IP 地址到数据库,请使用助手 spammer()->access()

spammer()
    ->access()
    ->ip('1.2.3.4')
    ->url('/foo/bar')
    ->store();

// or

spammer('1.2.3.4')
    ->access()
    ->url('/foo/bar')
    ->store();

当尝试获取带有错误的页面次数超过给定数量时,进行禁止。

示例

  • 当尝试次数达到 100 时 - 禁止 24 小时。
  • 当尝试次数达到 300 时 - 禁止 72 小时。
  • 当尝试次数达到 500 时 - 永久禁止

默认,永久禁止

中间件

接下来,在 app/Http/Kernel.php 文件中的 $routeMiddleware 块中添加中间件的链接,并在 $middlewareGroups 块中使用它

protected $middlewareGroups = [
    'web' => [
        // ...
        'spammers'
    ],

    'api' => [
        // ...
        'spammers'
    ],
];

protected $routeMiddleware = [
    // ...
    'spammers' => Helldar\Spammers\Middleware\Spammers::class
];

或者您可以在 Http/Kernel.php 文件的 $middleware 属性中全局指定

protected $middleware = [
    // ...
    \Helldar\Spammers\Middleware\Spammers::class,    
];

控制台命令

此包可以在控制台中调用

spam:amnesty
spam:store 1.2.3.4
spam:delete 1.2.3.4
spam:restore 1.2.3.4
spam:exists 1.2.3.4

spam:amnesty 命令允许您删除已过期的 IP 地址。

附加

您可以使用 Helldar\Spammers\Models\Spammer 模型。它是扩展的 Illuminate\Database\Eloquent\Model

简单使用

您可以在 Http/Kernel.php 文件的 $middleware 属性中全局指定。

protected $middleware = [
    // ...
    \Helldar\Spammers\Middleware\Spammers::class,    
];

接下来,在 app\Exceptions\Handler.php 文件的 report() 方法中,添加对 spammer()->access() 助手的调用。

public function report(Exception $exception)
{
    spammer(request()->ip())
        ->access()
        ->url(request()->fullUrl())
        ->store();

    parent::report($exception);
}

然后在 app/Console/Kernel.php 文件的 schedule() 方法中添加一条规则。

protected function schedule(Schedule $schedule)
{
    $schedule->command('spam:amnesty')
        ->everyThirtyMinutes();
}

执行命令。

php artisan vendor:publish
php artisan migrate

根据您的需求自定义 config/spammers.php 文件。

盈利!

版权和许可

Laravel Spammers 由 Andrey Helldar 为 Laravel 框架 5.4 或更高版本编写,并使用 MIT 许可证发布。有关详细信息,请参阅 LICENSE 文件。

翻译

文本和注释的翻译由 Google 翻译完成。帮助翻译 +1 在 karma :)