一个简单的 PHP JSON Web Tokens (JWT) 加密/解密插件

Maintainers

Package info

github.com/chenbool/jwt

Homepage

pkg:composer/chenbool/jwt

Statistics

Installs: 89

Dependents: 0

Suggesters: 0

Stars: 5

Open Issues: 0

1.0.0 2019-07-31 07:56 UTC

This package is auto-updated.

Last update: 2026-05-01 03:05:58 UTC


README

基于 PHP 的 JSON Web Token (JWT) 加密/解密库,符合 RFC 7519 标准。

特性

  • 轻量级,易于使用
  • 支持 HS256、HS384、HS512 等签名算法
  • 完整的异常处理
  • 兼容 PHP 5.3+

项目结构

jwt/
├── src/                       # 源代码
│   ├── JWT.php               # 核心类
│   ├── BeforeValidException.php    # 未生效异常
│   ├── ExpiredException.php       # 过期异常
│   └── SignatureInvalidException.php # 签名无效异常
├── composer.json               # 依赖配置
├── LICENSE                    # 许可证
└── README.md

安装

composer require chenbool/jwt

JWT 简介

JSON Web Token (JWT) 是一种开放标准 (RFC 7519),用于在各方之间安全地传输信息。JWT 可以作为 JSON 对象在各方之间安全地传输信息。

JWT 优点

  1. 服务端不需要保存传统会话信息,没有跨域传输问题,减小服务器开销
  2. JWT 构成简单,占用很少的字节,便于传输
  3. JSON 格式通用,不同语言之间都可以使用

JWT 组成

JWT 由三部分组成:

部分 说明
Header(头部) 声明类型和签名算法
Payload(载荷) 包含定义信息和自定义信息
Signature(签名) 签名验证信息

标准声明字段

字段 说明
iss JWT 签发者
sub JWT 所面向的用户
aud 接收 JWT 的一方
exp JWT 的过期时间
nbf 定义在什么时间之前不能访问
iat JWT 的签发时间
jti JWT 的唯一身份标识

使用方法

1. 基本使用

<?php
use \chenbool\JWT\JWT;

$key = "example_key";
$token = array(
    "iss" => "http://example.org", // 签发者
    "aud" => "http://example.com", // 接收方
    "iat" => 1356999524, // 签发时间
    "nbf" => time()+30, // 30秒后生效
    "exp" => time()+7200, // 2小时后过期
);

// 加密生成 Token
$jwt = JWT::encode($token, $key);

// 解密/验证 Token
$decoded = JWT::decode($jwt, $key, array('HS256'));
$decoded_array = (array) $decoded;
print_r($decoded);

2. 异常处理

<?php
try {
    JWT::$leeway = 60; // 时间偏移量
    $decoded = JWT::decode($jwt, $key, array('HS256'));
} catch(\chenbool\JWT\SignatureInvalidException $e) {  
    echo $e->getMessage(); // 签名不正确
} catch(\chenbool\JWT\BeforeValidException $e) {  
    echo $e->getMessage(); // Token 未生效
} catch(\chenbool\JWT\ExpiredException $e) {  
    echo $e->getMessage(); // Token 已过期
} catch(Exception $e) {  
    echo $e->getMessage(); // 其他错误
}

异常类说明

异常类 说明
SignatureInvalidException 签名无效异常
BeforeValidException Token 未生效异常
ExpiredException Token 过期异常

环境要求

  • PHP >= 5.3.0

相关链接