我正在嘗試在 Laravel 8 中為我的 API 實作一個非常簡單的原型(非生產)身份驗證系統。我的目標是讓任何擁有硬編碼 API 密鑰的用戶都能夠使用端點。否則,他們將在所有端點上收到 401 錯誤。用戶必須包含 API 密鑰作為 URI 引數,格式如下例:
'hostAddress'/api/endpoint1?apikey='APIkey'
其中“hostAddress”代表主機 ipv6 地址,“APIkey”代表硬編碼的 API 密鑰。
我為這個問題所做的每一次搜索都會讓我找到 Laravel 8 檔案(https://laravel.com/docs/8.x/authentication)。但是,檔案中的身份驗證解決方案比我正在尋找的要復雜得多。
如何在不使用復雜的 Laravel 包(例如 Passport 和 Sanctum)的情況下實作這個簡單的身份驗證系統?
uj5u.com熱心網友回復:
只需使用中間件。在 config/app.php 中添加您的密鑰
[
'api_key' => env('API_KEY'),
]
創建中間件并添加到 App\Http\Kernel
namespace App\Http\Middleware;
class ApiKeyMiddleware
{
public function handle($request, Closure $next)
{
if(!$key = $request->get('apikey') or $key !== config('app.api_key'){
throw new AuthenticationException('Wrong api key');
}
}
}
class Kernel extends HttpKernel
{
protected $middlewareGroups = [
'api' => [
App\Http\Middleware\ApiKeyMiddleware::class
'throttle:300,1',
'bindings',
],
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/347330.html
