niclas-timm/blacklister

在Laravel应用程序中对电子邮件进行黑名单验证

1.3.0 2023-12-06 18:13 UTC

This package is auto-updated.

Last update: 2024-09-06 20:07:05 UTC


README

Blacklist是一个Laravel应用程序的包,允许您对电子邮件输入进行黑名单验证。您可以阻止特定的电子邮件地址或整个域名。

⬇️ 安装

使用Composer安装此包

composer require niclas-timm/blacklister

接下来,运行以下命令以初始化必要的配置

php artisan blacklister:install

这会做几件事

  1. 它创建一个config/blacklister.php文件
  2. 它创建一个名为storage/framework/blacklist.json的文件。这是您存储黑名单的地方。如果您想的话,以后可以重命名和移动此文件(请参阅“配置”部分)。

🤙 使用

Blacklister使用JSON文件存储您的黑名单。默认情况下,此文件位于storage/framework/blacklist.json下,但您可以按需配置(见下文)。在该文件中,需要两个键:emailsdomains,它们分别期望数组作为其对应的值。正如其名称所示,您可以使用这些来阻止单个电子邮件地址或整个域名。

✅ 使用验证

使用Blacklister非常简单。只需将blacklist关键字添加到您的验证中,您就可以开始阻止了!就像这样

public function store(Request $request) {
  
  $validated = $request->validate([
        'email' => 'required|email|blacklist',
    ]);
    
}

👀 查看黑名单

一种方法当然是可以直接查看您的JSON文件。另一种方法是运行以下命令以在控制台查看黑名单

php artisan blacklister:view

➕ 向黑名单添加新值

您可以直接将值粘贴到JSON文件中,或者使用以下实用命令

php artisan blacklister:add {values} {--T|type}

例如

# Block emails.
php artisan blacklister:add block@me.com leave-me@alone.com --type="emails"

# Block domain.
php artisan blacklister:add blockme.com --type="domains"

➖ 从黑名单中删除值

您可以直接在JSON文件中删除值,或者使用以下实用命令

php artisan blacklister:remove {values}

例如

php artisan blacklister:remove unblock@me.com i-am-not-dangerous.com

此命令将自动检测值是单个电子邮件还是域名,并从您的黑名单文件中删除相应的数据。

🍪 使用Cookie

好的,您阻止了某人。那么呢?他们可以使用另一个电子邮件地址并注册,对吧?错了!您可以将配置文件中的enable_cookies设置为true。然后,当Blacklister验证失败时,会在用户的浏览器中设置一个Cookie。之后,只要Cookie有效,每次验证都会失败。所以如果用户尝试使用另一个电子邮件地址注册,它将不起作用。显然,这个解决方案并不是万无一失的。用户可以使用隐身模式或使用另一个浏览器。但总比没有好。

🔄 更新缓存

如果启用了Blacklister的缓存(见下文),则JSON文件中的值将缓存。这意味着每次黑名单JSON文件更改时,您都需要更新缓存。

如果您使用backlister:addblacklister:remove实用命令,这会自动发生。如果您手动更新JSON文件,您需要之后执行以下命令

php artisan blacklister:update-cache

警告

您必须在您的生产系统上运行此命令才能使更改生效。如果您经常更新黑名单,则可能需要在部署脚本中添加php artian blacklister:update-cache

💾 导出为CSV

您可以通过执行以下命令将黑名单导出为CSV文件

php artisan blacklister:export {file}

其中filename是要导出黑名单的CSV文件的路径。

例如

php artisan blacklister:export /my/export/directory/blacklister.csv

💽 从CSV导入

需要从CSV文件导入黑名单?没问题。只需执行

php artisan blacklister:import {file}

其中 file 是您想要从其中导入黑名单的 csv 文件路径。

示例

php artisan blacklister:import /my/import/directory/blacklister.csv

警告

您的 csv 文件必须具有特定的格式:它必须包含 "emails" 和 "domains" 标题。有关示例文件,请查看 /tests/fixtures/import_data.csv

⚙️ 配置

在安装过程中,Blacklister 会为您创建 config/blacklister.php 文件,该文件定义了 Blacklister 的行为。

您可以通过执行以下命令来检查您的配置是否有效:

php artisan blacklister:verify

😎 工作原理

实际上,Blacklister 非常简单。如果禁用缓存,则在每个请求时从 JSON 文件中获取内容,然后检查单个电子邮件地址或整个域名是否在黑名单上。

如果启用缓存,Blacklister 首先尝试从缓存中检索黑名单。如果找不到,它将从 JSON 文件加载数据并将其放入缓存,以便下次可以使用。