evo-mark/laravel-id-obfuscator

当向前端发送ID时对其进行混淆

1.2.0 2024-03-21 00:07 UTC

This package is auto-updated.

Last update: 2024-09-21 01:08:31 UTC


README

Build status Total Downloads Licence


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函数时也将自动解码:例如findfindOrFailfindManyfindOrNewfindOr

// 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只能用于递增主键