cable8mm / auth-by-key
使用API密钥授权对您的Laravel应用程序的请求
v2.1.2
2024-03-09 15:05 UTC
Requires
- php: ^8.0
- illuminate/console: ^9.18|^10.0
- illuminate/database: ^9.18|^10.0
- illuminate/http: ^9.18|^10.0
- illuminate/routing: ^9.18|^10.0
- laravel/helpers: ^1.1.0
Requires (Dev)
- laravel/pint: ^1.0
- phpunit/phpunit: ^9.0|^10.0|^11.0
README
我们还可以使用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许可证。