PHPackages                             leftsky/laravel-api-key - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. leftsky/laravel-api-key

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

leftsky/laravel-api-key
=======================

Laravel API密钥管理系统，支持API密钥的创建、验证和管理，包含完整的Filament管理界面和API调用日志功能

1.0.5(1y ago)0124MITPHPPHP ^8.2

Since Mar 9Pushed 1y agoCompare

[ Source](https://github.com/romosoft/laravel-api-key)[ Packagist](https://packagist.org/packages/leftsky/laravel-api-key)[ RSS](/packages/leftsky-laravel-api-key/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (6)Dependencies (7)Versions (6)Used By (0)

Laravel API Key
===============

[](#laravel-api-key)

Laravel API Key 是一个简单易用的 Laravel 包，用于管理和验证 API 密钥。通过这个包，您可以轻松地为您的 API 添加基于密钥的认证，并提供开箱即用的Filament管理界面。

版本兼容性
-----

[](#版本兼容性)

包版本Laravel版本PHP版本1.0.112.x8.2+特性
--

[](#特性)

- 🔑 轻松生成和管理 API 密钥
- 🛡️ 安全存储和验证机制
    - 密钥在前端始终部分隐藏，仅显示前8位
    - 仅在创建和重新生成时显示完整密钥一次
- ⏰ 支持密钥过期和状态管理
    - 可设置无限期密钥
    - 密钥过期状态清晰显示
- 🔒 基于中间件的 API 请求验证
- 📊 API 调用日志记录与查看（新增）
    - 自动记录所有 API 请求和响应
    - 详细记录请求路径、方法、状态码等信息
    - 可配置的日志保留期
- 🧩 完整的Filament界面集成
    - 开箱即用的管理界面
    - 支持创建、编辑、删除和重新生成密钥
    - 查看和管理 API 调用日志
- 🚀 支持缓存加速密钥验证
- 🛠️ 全面可配置
    - 表名
    - 密钥长度
    - 请求头名称
    - 缓存策略等
    - 日志记录选项

屏幕截图
----

[](#屏幕截图)

管理界面（已内置实现）： [![API密钥管理界面](https://camo.githubusercontent.com/706b42c9549dfd98472765790c7c7651a0c7b8fa912d6a7f26e3add89899f637/68747470733a2f2f706c616365686f6c6465722d666f722d73637265656e73686f742e636f6d2f6170692d6b6579732d6c6973742e706e67)](https://camo.githubusercontent.com/706b42c9549dfd98472765790c7c7651a0c7b8fa912d6a7f26e3add89899f637/68747470733a2f2f706c616365686f6c6465722d666f722d73637265656e73686f742e636f6d2f6170692d6b6579732d6c6973742e706e67)

安装
--

[](#安装)

使用 Composer 安装：

```
composer require leftsky/laravel-api-key:^1.0
```

安装后发布配置文件：

```
php artisan vendor:publish --tag=api-key-config
```

运行迁移创建API密钥表：

```
php artisan migrate
```

基本用法
----

[](#基本用法)

### 生成 API 密钥

[](#生成-api-密钥)

使用命令行：

```
php artisan api-key:generate {user_id} --name="示例密钥" --description="这是一个示例API密钥" --expires=365
```

或者使用 Facade：

```
use Leftsky\LaravelApiKey\Facades\ApiKey;

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

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

### 保护 API 路由

[](#保护-api-路由)

在路由中使用中间件保护您的 API：

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

### 启用 API 调用日志（新增）

[](#启用-api-调用日志新增)

要记录 API 调用日志，只需添加 `api.log` 中间件：

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

清理过期日志：

```
php artisan api-key:clean-logs --days=30
```

### 在请求中使用 API 密钥

[](#在请求中使用-api-密钥)

在 API 请求中，在头信息中包含您的 API 密钥：

```
X-API-KEY: your-api-key-here

```

### Filament管理界面

[](#filament管理界面)

本包自动集成到Filament管理面板中，提供完整的API密钥管理界面和API调用日志查看界面。

如果你还没有安装Filament，可以参考[Filament文档](https://filamentphp.com/docs/installation)进行安装。

配置
--

[](#配置)

您可以在 `config/api_key.php` 中配置：

```
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,  // 缓存时间（分钟）
],
```

这将减少数据库查询，提高 API 响应速度。

自定义
---

[](#自定义)

### 修改API密钥的验证逻辑

[](#修改api密钥的验证逻辑)

可以通过扩展`VerifyApiKey`中间件来自定义验证逻辑：

```
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);
    }
}
```

然后在`app/Http/Kernel.php`中替换原中间件：

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

### 自定义API日志记录

[](#自定义api日志记录)

类似地，您可以扩展`ApiKeyLoggingMiddleware`中间件来自定义日志记录逻辑：

```
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);
    }
}
```

然后在`app/Http/Kernel.php`中替换原中间件：

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

贡献
--

[](#贡献)

欢迎贡献代码、报告问题或提出改进建议！

许可证
---

[](#许可证)

本包基于 [MIT 许可证](LICENSE.md) 授权。

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance45

Moderate activity, may be stable

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

5

Last Release

427d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/8d4b47f75d822144d002ef6767c9614a253e1d23424146e299030d8a3b9dfa66?d=identicon)[leftsky](/maintainers/leftsky)

---

Top Contributors

[![leftsky](https://avatars.githubusercontent.com/u/33944849?v=4)](https://github.com/leftsky "leftsky (11 commits)")

---

Tags

apilaravelloggingAuthenticationtokenkeyfilamentapi-logs

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/leftsky-laravel-api-key/health.svg)

```
[![Health](https://phpackages.com/badges/leftsky-laravel-api-key/health.svg)](https://phpackages.com/packages/leftsky-laravel-api-key)
```

###  Alternatives

[yadahan/laravel-authentication-log

Laravel Authentication Log provides authentication logger and notification for Laravel.

416632.8k5](/packages/yadahan-laravel-authentication-log)[api-platform/laravel

API Platform support for Laravel

59126.4k6](/packages/api-platform-laravel)[shaffe/laravel-mail-log-channel

A package to support logging via email in Laravel

1286.2k](/packages/shaffe-laravel-mail-log-channel)[dragon-code/laravel-http-logger

Logging incoming HTTP requests

319.8k3](/packages/dragon-code-laravel-http-logger)[alajusticia/laravel-logins

Session management in Laravel apps, user notifications on new access, support for multiple separate remember tokens, IP geolocation, User-Agent parser

2011.0k](/packages/alajusticia-laravel-logins)[hryha/laravel-request-logger

A Laravel package to log requests and responses

102.2k](/packages/hryha-laravel-request-logger)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
