gdshenrun / simple-jwt
简单的 jwt 实现
1.0.1
2021-01-18 10:11 UTC
Requires
- php: >=7.1
- ext-json: >=1.0
- doctrine/cache: ^1.10
Requires (Dev)
- brainmaestro/composer-git-hooks: ^2.8
- friendsofphp/php-cs-fixer: ^2.16
- hyperf/utils: ^1.1
- phpunit/phpunit: ^9.1
This package is auto-updated.
Last update: 2025-02-18 18:42:20 UTC
README
超简单的 jwt 实现。支持 Laravel、Hyperf 以及支持 composer 的其他框架
如何安装 ?
composer require gdshenrun/simple-jwt
如何使用 ?
require 'vendor/autoload.php'; use Gdshenrun\SimpleJwt\JWTManager; use Gdshenrun\SimpleJwt\JWT; use Gdshenrun\SimpleJwt\Encoders; use Gdshenrun\SimpleJwt\EncryptAdapters; use Gdshenrun\SimpleJwt\Exceptions; $secret = 'gdshenrun/simple-jwt'; $headers = ['ver' => 0.1,]; $payload = [ 'user_id' => 'gdshenrun@gmail.com', 'tester' => 'gdshenrun', ]; // 可以使用自己实现的 encrypter 进行签名和校验,请继承自 AbstractEncrypter 抽象类 $encrypter = new EncryptAdapters\Md5Encrypter($secret); // 可以使用自己实现的 encoder 进行编码,请实现 Encoder 接口 $encoder = new Encoders\Base64Encoder(); $cache = function(JWTManager $JWTManager){ return new \Doctrine\Common\Cache\FilesystemCache(sys_get_temp_dir()); }; // 实例化 jwt manager $jwtManager = new JWTManager(compact('secret', 'encode','cache')); // 设置 token 有效时间,单位 分钟 $jwtManager->setTtl(60); // 设置 token 过期后多久时间内允许刷新,单位 分钟 $jwtManager->setRefreshTtl(120); // 通过 jwt manager 示例化 jwt ,标准 jwt $jwt0 = $jwtManager->make($payload, $headers); // 生成 token,当然你也可以使用链式调用,例如: $jwtManager->make($payload, $headers)->token() $token = $jwt0->token(); print_r($token); try { // 通过 token 得到 jwt 对象 $jwt1 = $jwtManager->parse($token); } catch (Exceptions\TokenExpiredException $tokenExpiredException) { // 如果已经过期了,也可以尝试刷新此 jwt ,第二个参数如果为 true 将忽略 refresh ttl 检查 $jwt1 = $jwtManager->refresh($tokenExpiredException->getJwt(), true); } // 得到 payload $jwt1->getPayload(); // 得到 headers $jwt1->getHeaders(); print_r($jwt1); // 自己实例化 jwt ,完全纯净的 jwt ,无多余 payload $jwt2 = new JWT($jwtManager, $headers, $payload);