cable8mm/auth-by-key

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

v2.1.2 2024-03-09 15:05 UTC

This package is auto-updated.

Last update: 2024-09-09 16:22:15 UTC


README

code-style run-tests Packagist Version Packagist Downloads Packagist Dependency Version Packagist Stars Packagist License

我们还可以使用Laravel的一方库进行授权,但这可能不是轻量级的。是的,作为一个Eloquent模型的用户,这可以帮助解决问题。只有通过“auth-by-key”层通过的请求才能通过Laravel请求进入下一阶段。

我们在网站上提供了API文档。如需更多信息,请访问https://www.palgle.com/auth-by-key/ ❤️

安装

运行composer require cable8mm/auth-by-key

运行迁移

$ php artisan migrate

将创建1个新的数据库表

  • api_keys

管理密钥

使用php artisan apikey:generate {name}生成一个新的密钥。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状态码

{
  "errors": [
    {
      "message": "Unauthorized"
    }
  ]
}

Laravel Nova

发布nova资源文件

php artisan vendor:publish --tag=auth-by-key-nova

如果通常需要重写,

php artisan vendor:publish --tag=auth-by-key-nova --force

修复编码风格

composer lint

测试

composer test

许可证

Auth By Key软件包是开源软件,许可协议为MIT许可证