Hướng dẫn các bước cài đặt
Trước tiên chạy lệnh cmd sau:
composer require ejarnutowski/laravel-api-key
Thêm đoạn code khai báo trong mảng providers trong file config/app.php
'providers' => [ ... Ejarnutowski\LaravelApiKey\Providers\ApiKeyServiceProvider::class, ],
Chép các file trong migration vào database/migrations với lệnh sau:
$ php artisan vendor:publish
Chạy lệnh thực thi các file tạo bảng dữ liệu:
$ php artisan migrate
Sau khi thực thi lệnh sẽ tạo 3 bảng sau:
api_keys
api_key_access_events
api_key_admin_events
Chạy lệnh tạo một Key ngẫu nhiên:
php artisan apikey:generate {name}
Ví dụ: Tạo một key với tên là app1 (Lưu ý: Tên không được có ký tự đặt biệt)
$ php artisan apikey:generate app1 // API key created // Name: app1 // Key: 0ZdNlr7LrQocaqz74k6usQsOsqhqSIaUarSTf8mxnHuQVh9CvKAfpUy94VvBmFMq
Cách thay đổi trạng thái sử dụng cho key.
Vô hiệu hóa key vớí lệnh cmd sau:
$ php artisan apikey:deactivate app1 // Deactivated key: app1
Kích hoạt key với lệnh cmd sau:
$ php artisan apikey:activate app1 // Activated key: app1
Cách xóa một key với lệnh cmd sau:
$ php artisan apikey:delete app1 // Are you sure you want to delete API key 'app1'? (yes/no) [no]: // > yes // Deleted key: app1
Cách hiển thị danh sách các key với dòng lệnh cmd hoặc có thể vào cơ sở dư liệu xem bảng dữ liệu "api_keys".
$ 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 | // +----------+----+-------------+---------------------+------------------------------------------------------------------+
Cách sử dụng:
Yêu cầu khai báo khóa API: có 2 cách
Cách yêu cầu khai báo tại Route.
Route::get('api/user/1', function () { // })->middleware('auth.apikey');
Cách yêu cầu khai báo tại Controller.
class UserController extends Controller { /** * Instantiate a new controller instance. * * @return void */ public function __construct() { $this->middleware('auth.apikey'); } }
Đường dẫn chỉ cho phép truy cập với khai báo header "X-Authorization" có giá trị là khóa đã kích hoạt.
X-Authorization: KuKMQbgZPv0PRC6GqCMlDQ7fgdamsVY75FrQvHfoIbw4gBaG5UX0wfk6dugKxrtW
Trường hợp với khóa chưa được khai báo hoặc khóa chưa được kích hoạt sẽ trả về giá trị như sau:
{ "errors": [ { "message": "Unauthorized" } ] }
Nhật ký được lưu lại:
Mỗi yêu cầu khóa API vượt qua thành công sẽ được ghi lại trong bảng api_key_access_events với thông tin sau: api_key_id, ip_address, url, created_at, updated_at
Bất cứ khi nào một khóa API được tạo, kích hoạt, hủy kích hoạt hoặc xóa, một bản ghi sẽ được ghi vào bảng api_key_admin_events. Mỗi bản ghi chứa các thông tin sau: api_key_id, ip_address, event, created_at, updated_at
Đoạn code PHP thực thi link API và hiển thị kết quả trả về:
<?php $get_url = '{put_url_here}';
$ch = curl_init($get_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Authorization: {key}'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
?>
Chia sẻ: Ngụy Kim Hưng
Tham khảo link nguồn: Authorize requests to your Laravel application with API keys