niclas-timm / blacklister
在Laravel应用程序中对电子邮件进行黑名单验证
Requires (Dev)
- orchestra/testbench: ^8.15
- phpunit/phpunit: ^10.4
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
这会做几件事
- 它创建一个
config/blacklister.php
文件 - 它创建一个名为
storage/framework/blacklist.json
的文件。这是您存储黑名单的地方。如果您想的话,以后可以重命名和移动此文件(请参阅“配置”部分)。
🤙 使用
Blacklister使用JSON文件存储您的黑名单。默认情况下,此文件位于storage/framework/blacklist.json
下,但您可以按需配置(见下文)。在该文件中,需要两个键:emails
和domains
,它们分别期望数组作为其对应的值。正如其名称所示,您可以使用这些来阻止单个电子邮件地址或整个域名。
✅ 使用验证
使用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:add
或blacklister: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 文件加载数据并将其放入缓存,以便下次可以使用。