JWT(JSON Web Token)は、ネットワークアプリケーション間で安全な情報を渡すために使用される暗号化トークンです。 JSONオブジェクトの形で、クライアントとサーバーの間に情報を安全に送信します。
JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。
ヘッダー:トークンのタイプと暗号化アルゴリズムを宣言します。例:
{
"alg": "HS256",
"typ": "JWT"
}
ペイロード:いくつかの標準宣言とカスタム宣言が含まれています。例:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
署名:ヘッダーのbase64エンコードに署名し、キーを使用してペイロードを生成します。
ThinkPhp6でJWT検証を使用するには、最初にJWT拡張機能をインストールする必要があります。 Project DirectoryのComposer.jsonファイルで、次の依存関係を追加します。
"require": {
"firebase/php-jwt": "5.0.0"
}
次に、 Composer Installコマンドを実行してJWT拡張機能をインストールします。
正常にログインした後、トークンを生成してクライアントに返すことができます。サンプルコード:
use think\jwt\JWT;
public function login() {
// ログインロジック
$payload = [
'sub' => $user->id,
'name' => $user->username,
'iat' => time()
];
$token = JWT::encode($payload, $key);
return json(['token' => $token]);
}
ユーザーのIDを確認する必要がある場合は、JWTを使用してトークンの有効性を確認できます。サンプルコード:
use think\jwt\JWT;
public function getUser(Request $request) {
$token = $request->header('Authorization');
try {
$payload = JWT::decode($token, $key, ['HS256']);
$user = User::get($payload->sub); // データベースからユーザー情報を取得します
return json($user);
} catch (Exception $e) {
return json(['error' => 'Token is invalid']);
}
}
JWTは便利で安全な認証方法であり、ThinkPhp6にJWT認証を実装することも非常に簡単です。トークンを生成および検証するプロセスを通じて、ユーザーのIDは効果的に保護されます。同時に、秘密の鍵を保護し、トークンの有効期限を合理的に設定すると、システムのセキュリティがさらに強化される可能性があります。