PHP code example of leftsky / laravel-api-key

1. Go to this page and download the library: Download leftsky/laravel-api-key library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

leftsky / laravel-api-key example snippets


use Leftsky\LaravelApiKey\Facades\ApiKey;

$apiKey = ApiKey::generate(1, [
    'name' => '我的API密钥',
    'description' => '这是一个测试密钥',
    'expires_in_days' => 90
]);

// 获取生成的密钥
$keyString = $apiKey->key;

// routes/api.php
Route::middleware('api.key')->group(function () {
    Route::get('/user', function () {
        // 只有拥有有效API密钥的请求才能访问这里
        return auth()->user();
    });
});

// routes/api.php
Route::middleware(['api.key', 'api.log'])->group(function () {
    Route::get('/user', function () {
        // 所有对此路由的API请求都会被记录
        return auth()->user();
    });
});

return [
    // API密钥表名
    'table_name' => 'api_keys',
    
    // API日志表名
    'log_table_name' => 'api_logs',
    
    // 密钥长度
    'key_length' => 64,
    
    // 请求头名称
    'header_name' => 'X-API-KEY',
    
    // 默认过期时间(天)
    'expires_in_days' => 365,
    
    // 是否启用Filament集成
    'enable_filament_integration' => true,
    
    // API路由配置
    'routes' => [
        'enabled' => true,
        'prefix' => 'api',
        'middleware' => ['api'],
    ],
    
    // 密钥验证策略(database或cache)
    'auth_strategy' => 'database',
    
    // 缓存配置
    'cache' => [
        'prefix' => 'api_key_',
        'ttl' => 60,  // 缓存时间(分钟)
    ],
    
    // 日志配置
    'logging' => [
        // 是否启用日志
        'enabled' => env('API_KEY_LOGGING_ENABLED', true),
        
        // 是否记录请求数据
        'log_request_data' => env('API_KEY_LOG_REQUEST_DATA', true),
        
        // 是否记录响应数据
        'log_response_data' => env('API_KEY_LOG_RESPONSE_DATA', true),
        
        // 不记录日志的端点列表
        'excluded_endpoints' => [
            // 例如: 'api/health-check'
        ],
        
        // 日志保留天数
        'retention_days' => env('API_KEY_LOG_RETENTION_DAYS', 30),
    ],
];

'auth_strategy' => 'cache',
'cache' => [
    'prefix' => 'api_key_',
    'ttl' => 60,  // 缓存时间(分钟)
],

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Leftsky\LaravelApiKey\Http\Middleware\VerifyApiKey as BaseVerifyApiKey;

class CustomApiKeyMiddleware extends BaseVerifyApiKey
{
    public function handle(Request $request, Closure $next)
    {
        // 自定义验证逻辑
        
        return parent::handle($request, $next);
    }
}

protected $middlewareAliases = [
    // ... 其他中间件
    'api.key' => \App\Http\Middleware\CustomApiKeyMiddleware::class,
];

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Leftsky\LaravelApiKey\Http\Middleware\ApiKeyLoggingMiddleware as BaseApiKeyLoggingMiddleware;

class CustomApiKeyLoggingMiddleware extends BaseApiKeyLoggingMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        // 自定义日志记录逻辑
        
        return parent::handle($request, $next);
    }
}

protected $middlewareAliases = [
    // ... 其他中间件
    'api.log' => \App\Http\Middleware\CustomApiKeyLoggingMiddleware::class,
];
bash
php artisan vendor:publish --tag=api-key-config
bash
php artisan migrate
bash
php artisan api-key:generate {user_id} --name="示例密钥" --description="这是一个示例API密钥" --expires=365
bash
php artisan api-key:clean-logs --days=30