victorybiz/laravel-api-key

使用API密钥授权您的Laravel应用程序请求

v1.0.3 2020-02-18 04:47 UTC

This package is auto-updated.

Last update: 2024-09-18 15:25:55 UTC


README

GitHub release Software License Build Status Packagist

Laravel应用程序的API密钥授权。

此包的初始核心文件是从ejarnutowski/laravel-api-key克隆的。

安装

使用composer安装,从命令行运行

$ composer require victorybiz/laravel-api-key

或者,您可以将"victorybiz/laravel-api-key": "^1.0"添加到您的composer.json文件的require部分,然后运行composer installcomposer 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许可证许可。