beta/bx.jwt

Bitrix应用的JWT令牌

安装数量: 2,110

依赖者: 1

建议者: 0

安全: 0

星标: 6

关注者: 4

分支: 4

公开问题: 0

类型:bitrix-module

1.3.2 2022-11-05 21:13 UTC

This package is auto-updated.

Last update: 2024-09-06 01:02:25 UTC


README

安装

composer require beta/bx.jwt

使用

在管理员设置中指定签名密钥(默认已存在),传递令牌的标题和令牌有效期 - /bitrix/admin/settings.php?lang=ru&mid=bx.jwt&mid_menu=1

初始化JWT服务

use Bitrix\Main\Config\Option;
use Bx\JWT\UserTokenService;
use Bx\JWT\Strategy\HS256TokenStrategy;
use Bx\JWT\UserDataPacker;
use Bx\Model\Services\UserService;

$ttl = (int)Option::get('bx.jwt', 'JWT_TTL', 86400);   // время жизни токена
$jwtHeader = (string)Option::get('bx.jwt', 'JWT_HTTP_HEADER', 'X-API-Key');
$userService = new UserService();
$userTokenService = new UserTokenService(
    new HS256TokenStrategy(),               // стратегия для подписи токена
    new UserDataPacker($ttl, $userService), // упаковщик данных (здесь определяется какие данные будут записаны в токене)
    $userService                            // сервис для работы с пользователями
);

生成用户令牌

use Bx\JWT\Interfaces\UserTokenServiceInterface;

/**
* @var UserTokenServiceInterface $userTokenService
*/
$tokenContext = $userTokenService->createToken(1);  // генерируем токен для пользователя с идентификатором 1
(string)$tokenContext; // текстовое представление токена

读取用户令牌

use Bx\JWT\Interfaces\UserTokenServiceInterface;

/**
* @var UserTokenServiceInterface $userTokenService
*/

$tokenStr = '....'; // JWT токен
$tokenContext = $userTokenService->readToken($tokenStr);
$tokenContext->getUid();    // уникальный идентификатор использованный упаковщиком при генерации токена
$tokenContext->getData();   // запакованные в JWT токен данные в виде stdClass

$userContext = $userTokenService->getUserContext($tokenStr);
$userContext->getUserId();          // идентификатор пользователя
$user = $userContext->getUser();    // модель пользователя
$user->getId();
$user->getName();
$user->getLastName();
$user->getSecondName();
$user->getEmail();
$user->getPhone();