yupoxiong/simple-jwt

简易的jwt扩展包

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

This package is auto-updated.

Last update: 2024-04-14 06:54:29 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内示例