Модуль jwt реализует REST аутентификацию, настройку ключа и многое другое. Небольшой спиппет как сгенерировать и отправить jwt с собсвенной нагрузкой.
Передадим токен, в котором полезной нагрузкой будет ID пользователя. А время жизни токена — 1 час.
1 2 3 4 5 6 7 8 9 10 |
$user_id = 1; $user = \Drupal\user\Entity\User::load(1); $jwt = new \Drupal\jwt\JsonWebToken\JsonWebToken(); // полезная нагрузка токена // пользователь и время жизни (1 час) $jwt->setClaim(['drupal', 'uid'], $account->id()); $jwt->setClaim('iat', time()); $jwt->setClaim('exp', strtotime('+ 1 hour')); $jwt->setClaim('tz', 'UTC'); |
Данные нужно закодировать. Для этого используем класс \Drupal\jwt\Transcoder\JwtTranscoder с инъекцией сервисов также объявленных в jwt модуле.
1 2 3 4 5 6 7 |
$transcoder = new JwtTranscoder(); $transcoder->applyConfiguration( \Drupal::service('config.factory'), \Drupal::service('key.repository') ); $token = $transcoder->encode($jwt); |
В конце передаём токен в виде json ответа сервера
1 2 3 4 5 6 7 8 9 |
$response = new \stdClass(); if ($token === FALSE) { $response->error = "Error. Please set a key in the JWT admin page."; return new JsonResponse($response, 500); } $response->token = $token; return new JsonResponse($response); |