victorybiz / laravel-api-key
使用API密钥授权您的Laravel应用程序请求
Requires
- php: >=5.5.9
This package is auto-updated.
Last update: 2024-09-18 15:25:55 UTC
README
Laravel应用程序的API密钥授权。
此包的初始核心文件是从ejarnutowski/laravel-api-key
克隆的。
安装
使用composer安装,从命令行运行
$ composer require victorybiz/laravel-api-key
或者,您可以将"victorybiz/laravel-api-key": "^1.0"
添加到您的composer.json文件的require
部分,然后运行composer install
或composer update
来下载它并更新自动加载器。
如果您使用
Laravel >= 5.5
,您可以跳过此步骤,直接进入发布并运行迁移
如果您使用
Laravel < 5.5
,您需要将服务提供者注册到应用程序中。打开config/app.php
,定位到providers
键,将Laravel API Key服务提供者添加到providers
数组的末尾。
'providers' => [ ... Victorybiz\LaravelApiKey\Providers\ApiKeyServiceProvider::class, ],
发布迁移文件
$ php artisan vendor:publish
运行迁移
$ php artisan migrate
将创建3个新的数据库表
- api_keys
- api_key_access_events
- api_key_admin_events
管理密钥
使用php artisan apikey:generate {name}
生成新的密钥。名称参数是API密钥的名称。所有新密钥默认都是激活的。
$ php artisan apikey:generate app1 // API key created // Name: app1 // Key: 0ZdNlr7LrQocaqz74k6usQsOsqhqSIaUarSTf8mxnHuQVh9CvKAfpUy94VvBmFMq
使用php artisan apikey:deactivate {name}
停用密钥。
$ php artisan apikey:deactivate app1 // Deactivated key: app1
使用php artisan apikey:activate {name}
激活密钥。
$ php artisan apikey:activate app1 // Activated key: app1
删除密钥。您将被要求确认。密钥将进行软删除以记录。
$ php artisan apikey:delete app1 // Are you sure you want to delete API key 'app1'? (yes/no) [no]: // > yes // Deleted key: app1
列出所有密钥。-D或--deleted标志包括已删除的密钥
$ php artisan apikey:list -D // +----------+----+-------------+---------------------+------------------------------------------------------------------+ // | Name | ID | Status | Status Date | Key | // +----------+----+-------------+---------------------+------------------------------------------------------------------+ // | app1 | 5 | deleted | 2017-11-03 13:54:51 | 0ZdNlr7LrQocaqz74k6usQsOsqhqSIaUarSTf8mxnHuQVh9CvKAfpUy94VvBmFMq | // | app2 | 1 | deleted | 2017-11-02 22:34:28 | KuKMQbgZPv0PRC6GqCMlDQ7fgdamsVY75FrQvHfoIbw4gBaG5UX0wfk6dugKxrtW | // | app3 | 3 | deactivated | 2017-11-02 23:12:34 | IrDlc7rSCvUzpZpW8jfhWaH235vJAqFwyzVWpoD0SLGzOimA6hcwqMvy4Nz6Hntn | // | app4 | 2 | active | 2017-11-02 22:48:13 | KZEl4Y2HMuL013xvg6Teaa7zHPJhGy1TDhr2zWzlQCqTxqTzyPTcOV6fIQZVTIU3 | // +----------+----+-------------+---------------------+------------------------------------------------------------------+
用法
实现授权
为您注册了一个新的auth.apikey
路由中间件,您可以在路由或控制器中使用它。以下是如何使用中间件的示例,但有关详细信息,请参阅Laravel文档中的中间件。
路由示例
Route::get('api/user/1', function () { // })->middleware('auth.apikey');
控制器示例
class UserController extends Controller { /** * Instantiate a new controller instance. * * @return void */ public function __construct() { $this->middleware('auth.apikey'); } }
授权请求
为了通过auth.apikey
中间件,请求必须包含一个X-Authorization
头部,其值是一个有效的API密钥。
X-Authorization: KuKMQbgZPv0PRC6GqCMlDQ7fgdamsVY75FrQvHfoIbw4gBaG5UX0wfk6dugKxrtW
未授权请求
未经授权的请求将收到HTTP 401
状态码和以下响应
{ "status": false, "message": "Unauthorized endpoint request.", }
事件历史
所有通过授权的API请求都记录在api_key_access_events
表中。对于每个请求,都会创建一个包含以下信息的记录
- api_key_id
- ip_address
- url
- created_at
- updated_at
每当生成、激活、停用或删除API密钥时,都会在api_key_admin_events
表中记录一个记录。每个记录包含以下信息
- api_key_id
- ip_address
- event
- created_at
- updated_at
许可证
此Laravel API Key软件包是开源软件,根据MIT许可证许可。