JWT(JSON Web Token)は、クライアントとサーバーの間に安全な情報を渡すことにより、ユーザーIDを認証する認証のオープン標準です。 JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。その中で、ヘッダーは署名アルゴリズム、ペイロードがユーザー情報を保存し、署名を使用してJWTの完全性を確保し、改ざんを防ぐために使用されます。
1。ステートレス:JWTトークンは、サーバーにセッション情報を保存する必要はなく、複数のサーバー間で簡単に拡張できます。
2。セキュリティ:JWTは、データの改ざんを避けるために、署名を通じてデータの整合性と信頼性を保証します。
3.スケーラビリティ:JWTの負荷部分は、必要な情報を保存でき、さまざまなアプリケーションシナリオに適しています。
ThinkPhpフレームワークでJWTを使用するには、最初に `Firebase/PHP-JWT`ライブラリをインストールする必要があります。 Composerを使用してインストールできます。コマンドは次のとおりです。
<span class="fun">作曲家はFirebase/Php-Jwtを必要とします</span>
JWTを生成するプロセスには、ヘッダーの作成、ペイロードの設定、秘密鍵での署名が含まれます。 ThinkPhpでは、JWTを生成するためにコントローラーにメソッドを記述できます。これがサンプルコードです:
use Firebase\JWT\JWT;
class UserController extends Controller {
public function createJwt($userId, $username) {
$key = 'your_secret_key';
$payload = array(
'user_id' => $userId,
'username' => $username,
'exp' => time() + 3600 // 有効期限を設定します1時間
);
$jwt = JWT::encode($payload, $key);
return $jwt;
}
}
上記のコードでは、「createjwt」メソッドは、ユーザーID、ユーザー名、有効期限を含むJWTを生成します。
検証JWTは、ミドルウェアを作成することで処理できます。 JWTを検証するためのサンプルコードは次のとおりです。
use Firebase\JWT\JWT;
class JwtMiddleware {
public function handle($request, Closure $next) {
$key = 'your_secret_key';
$jwt = $request->header('Authorization');
try {
JWT::decode($jwt, $key, array('HS256'));
return $next($request);
} catch (Exception $e) {
return response('Unauthorized.', 401);
}
}
}
この例では、「ハンドル」メソッドはリクエストからJWTを抽出し、その有効性を確認します。 JWTが有効な場合、リクエストは継続されます。そうしないと、401の不正な応答が返されます。
特定のルートを保護するために、ルート定義の場合はJWT検証ミドルウェアを適用できます。ルートを保護するためのサンプルコードは次のとおりです。
use Firebase\JWT\JWT;
Route::get('/protected', function () {
return response('Protected resource.');
})->middleware('jwt');
この例では、「ミドルウェア」メソッドは、JWT検証ミドルウェアを「/保護された」ルートに適用し、検証に合格するリクエストのみがルートにアクセスできるようにします。
JWTを使用することにより、ThinkPHPフレームワークに効率的な認証と承認メカニズムを実装できます。 JWTを使用すると、アプリケーションのセキュリティが向上するだけでなく、柔軟なスケーラビリティも提供します。このチュートリアルでは、JWTを生成し、JWTを検証し、JWTを使用して敏感なルートを保護する方法について説明します。この記事がJWTをよりよく理解し、適用するのに役立つことを願っています。