evo-mark / laravel-id-obfuscator
当向前端发送ID时对其进行混淆
1.2.0
2024-03-21 00:07 UTC
Requires
- php: ^8.1
- hashids/hashids: ^5.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- laravel/pint: ^1.0
- orchestra/testbench: ^8.0|^9.0
README
Laravel ID Obfuscator
Laravel 10 兼容
警告:此包仅用于混淆ID,如果需要安全地加密标识符,则不应使用此包
安装
composer require evo-mark/laravel-id-obfuscator
模型
使用方法
use EvoMark\LaravelIdObfuscator\Traits\Obfuscatable; class User extends Authenticatable { use Obfuscatable; }
使用Obfuscatable
特性可以提供自动的路由模型绑定,并在将主键发送到前端时自动解码和编码
Route::get('/users/{user}', [SomeController::class, 'index']); // SomeController public function index(User $user) { // $user will now have the decoded ID ready for internal use // If you need to access the obfuscated ID internally, you can use $obfuscatedId = $user->obfuscatedId; }
Obfuscatable
模型在调用模型的find
-style函数时也将自动解码:例如find
、findOrFail
、findMany
、findOrNew
、findOr
// SomeController /** * @param string $id The obfuscated order ID */ public function index($id) { $order = Order::find($id); }
验证
Laravel ID Obfuscator自带用于验证传入混淆ID的规则扩展,简单易用
public function store($request) { $validated = $request->validate([ 'id' => ['required','id_exists:users'] ]); }
外观
您可以通过提供的外观随时访问编码和解码功能。
use EvoMark\LaravelIdObfuscator\Facades\Obfuscate; $encoded = Obfuscate::encode(5); $decoded = Obfuscate::decode($encoded);
配置
您可以通过运行以下Artisan命令发布包配置
php artisan v:p --provider="EvoMark\LaravelIdObfuscator\Provider"
限制
- Laravel ID Obfuscator只能用于递增主键