yupoxiong/simple-jwt

简易的JWT扩展包

v1.0 2022-06-14 03:02 UTC

This package is auto-updated.

Last update: 2024-09-14 07:44:41 UTC


README

一个简易的JWT扩展

概述

虽然网上有大量基于PHP的JWT扩展,但在开发中小型项目时,往往只需要一个简单高效的JWT加密扩展,但找到这样的扩展却特别困难。因此,这个扩展就应运而生。无需复杂的初始化,也不必担心代码臃肿带来的性能损失,只需几行代码就可以生成/验证基于JWT的token。

支持的加密方式

  • HS256
  • HS384
  • HS512
  • RS256
  • RS384
  • RS512

使用方法

生成token

use yupoxiong\jwt\Jwt;

// 初始化jwt
$jwt = new Jwt();
// 当前时间
$time = time();

// 设置加密方式为sha256
$jwt->setAlg('HS256');

// 加密key
$key = '123456';

// 设置加密key
$jwt->setKey($key);

// 设置用户ID
$jwt->setUid($uid);

// 生成唯一的jti
$jti = sha1((string)$uid);

// 设置jti
$jwt->setJti($jti);

// 添加自定义header
$jwt->setHeader('haha', '123');

// 设置签发人
$jwt->setIss('server');

// 设置签发时间
$jwt->setIat($time);

// 设置使用人
$jwt->setAud('client');

// 设置可用时间
$jwt->setNbf($time);

// 设置1小时后过期
$jwt->setExp($time + 3600);

// 自定义claim
$jwt->setClaim('hi001','001');

$token = $jwt->getToken();

验证token

use yupoxiong\jwt\Jwt;

// 初始化jwt
$jwt = new Jwt();

$result = $jwt->setKey($key)->checkToken($token);

if ($result) {
    // 获取uid
    $uid = $jwt->getUid();
    
    // 获取jti
    $jti = $jwt->getJti();
    
    // 获取自定义的claim
    $hi001 = $jwt->getClaim('hi001');
    
    // 获取整个header数组
    $header = $jwt->getHeader();
    
    // 获取整个payload数组
    $payload = $jwt->getPayload();
    
    // 获取签发人
    $iss = $jwt->getIss();
    // 获取使用人
    $aud = $jwt->getAud();
} else {
    // 验证失败,输出原因
    echo $jwt->getMessage() ;
}

辅助函数

use \yupoxiong\jwt\exception\JwtException;

try {   
    // 生成
    $token = jwt_token('key','uid');
} catch (JwtException $e) {
    // 生成失败
    $msg = $e->getMessage();
}

try {   
    // 验证
    $jwt = jwt_token_check('token','key');
    // 后续操作
    $uid = $jwt->getUid();
} catch (JwtException $e) {
    // 验证失败
    $msg = $e->getMessage();
}

更多示例请参考src/example/JwtExample.php