Декодирование токена JWT в PHP: методы и примеры кода

Чтобы декодировать JWT (веб-токен JSON) в PHP, вы можете использовать различные методы. Вот несколько вариантов с примерами кода:

Метод 1. Использование библиотеки «firebase/php-jwt».
Вы можете использовать популярную библиотеку «firebase/php-jwt», которая обеспечивает простой способ декодирования и проверки токенов JWT.

Сначала установите библиотеку с помощью Composer, выполнив следующую команду:

composer require firebase/php-jwt

После установки библиотеки вы можете декодировать токен JWT следующим образом:

<?php
require 'vendor/autoload.php';
use Firebase\JWT\JWT;
$jwtToken = 'your_jwt_token';
$decodedToken = JWT::decode($jwtToken, 'your_secret_key', array('HS256'));
// Access the decoded claims
$userId = $decodedToken->user_id;
$role = $decodedToken->role;
// Use the claims as needed
echo "User ID: " . $userId;
echo "Role: " . $role;
?>

Метод 2: использование библиотеки «lcobucci/jwt».
Другая популярная библиотека для работы с токенами JWT в PHP — «lcobucci/jwt». Вы можете использовать эту библиотеку для декодирования и проверки токенов JWT.

Начните с установки библиотеки с помощью Composer:

composer require lcobucci/jwt

Вот пример декодирования токена JWT с помощью «lcobucci/jwt»:

<?php
require 'vendor/autoload.php';
use Lcobucci\JWT\Parser;
$jwtToken = 'your_jwt_token';
$token = (new Parser())->parse($jwtToken);
// Access the decoded claims
$userId = $token->getClaim('user_id');
$role = $token->getClaim('role');
// Use the claims as needed
echo "User ID: " . $userId;
echo "Role: " . $role;
?>

Метод 3: использование встроенной функции base64_decode
Если вам нужен более ручной подход без использования каких-либо внешних библиотек, вы можете декодировать токен JWT с помощью встроенного функция base64_decodeв PHP.

Вот пример того, как декодировать токен JWT без использования сторонних библиотек:

<?php
$jwtToken = 'your_jwt_token';
$jwtParts = explode('.', $jwtToken);
$header = base64_decode($jwtParts[0]);
$payload = base64_decode($jwtParts[1]);
// Access the decoded claims
$decodedHeader = json_decode($header);
$decodedPayload = json_decode($payload);
$userId = $decodedPayload->user_id;
$role = $decodedPayload->role;
// Use the claims as needed
echo "User ID: " . $userId;
echo "Role: " . $role;
?>