bayfrontmedia / php-jwt
一个用于在PHP中编码和解码JSON Web Tokens (JWT) 的简单库,符合RFC 7519规范。
v2.0.0
2023-01-26 17:16 UTC
Requires
- php: ^8.0
- ext-json: *
README
一个用于在PHP中编码和解码JSON Web Tokens (JWT) 的简单库,符合 RFC 7519 规范。
目前,仅支持“HS256”算法。未来版本将计划支持更多算法。
许可证
本项目是开源的,遵循 MIT许可证。
作者
需求
- PHP
^8.0
- JSON PHP 扩展
安装
composer require bayfrontmedia/php-jwt
用法
必须将一个私有的、可重复的密钥传递给构造函数。用于编码JWT的相同密钥也必须用于解码以验证签名。
如果需要,可以使用静态 createSecret()
方法生成一个密码学安全的密钥。
use Bayfront\JWT\Jwt;
$secret = Jwt::createSecret(); // Be sure to save the secret to be used to decode the JWT
$jwt = new Jwt($secret);
公开方法
- createSecret
- getHeader
- setHeader
- removeHeader
- getPayload
- setPayload
- removePayload
- aud
- exp
- iat
- iss
- jti
- nbf
- sub
- encode
- decode
- validateSignature
- validateClaims
createSecret
描述
创建一个随机字节的密码学安全的密钥。
注意:密钥应被存储,因为用于编码JWT的相同密钥也必须用于解码。
参数
$characters = 32
(int): 字符数
返回值
- (string)
抛出异常
Exception
示例
use Bayfront\JWT\Jwt;
try {
$secret = Jwt::createSecret();
} catch (Exception $e) {
die($e->getMessage());
}
getHeader
描述
返回当前头部数组。
参数
- None
返回值
- (array)
示例
print_r($jwt->getHeader());
setHeader
描述
将自定义值设置到当前头部数组。
参数
$header
(array): 要设置的键/值对
返回值
- (self)
示例
$header = [
'cty' => 'custom-content-type;v=1'
];
$jwt->setHeader($header);
removeHeader
描述
如果存在,则删除头部键。
参数
$key
(string)
返回值
- (self)
示例
$jwt->removeHeader('cty');
getPayload
描述
返回当前有效负载数组。
参数
- None
返回值
- (array)
示例
print_r($jwt->getPayload());
setPayload
描述
将自定义值设置到当前有效负载数组。
参数
$payload
(array): 要设置的键/值对
返回值
- (self)
示例
$payload = [
'user_id' => 10
];
$jwt->setPayload($payload);
removePayload
描述
如果存在,则删除有效负载键。
参数
$key
(string)
返回值
- (self)
示例
$jwt->removePayload('user_id');
aud
描述
设置受众。
参数
$aud
(string)
返回值
- (self)
exp
描述
设置过期时间。
参数
$exp
(int)
返回值
- (self)
iat
描述
设置发行时间。
参数
$iat
(int)
返回值
- (self)
iss
描述
设置发行者。
参数
$iss
(string)
返回值
- (self)
jti
描述
设置JWT ID。
参数
$jti
(string)
返回值
- (self)
nbf
描述
设置不在之前时间。
参数
$nbf
(int)
返回值
- (self)
sub
描述
设置主题。
参数
$sub
(string)
返回值
- (self)
encode
描述
编码并返回一个签名JWT。
参数
$payload = []
(array)
返回值
- (string)
示例
$now = time();
$token = $jwt->iss('API key whose secret signs the token')
->iat($now)
->nbf($now)
->exp($now + 86400) // 24 hours
->encode([
'user_id' => 10
]);
decode
描述
解码JWT。
此方法验证令牌结构为三个由点分隔的段。
返回的数组将包含 header
、payload
和 signature
键。
如果 $validate = true
,则还将验证签名和声明。
参数
$jwt
(string): JWT自身或整个Authorization
头部都可以使用$validate = true
(bool): 验证签名和声明
返回值
- (array)
抛出异常
Bayfront\JWT\TokenException
示例
try {
$decoded = $jwt->decode('encoded.jwt');
} catch (TokenException $e) {
die($e->getMessage());
}
validateSignature
描述
验证签名。
参数
$jwt
(string): JWT自身或整个Authorization
头部都可以使用
返回值
- (self)
抛出异常
Bayfront\JWT\TokenException
示例
try {
$decoded = $jwt->validateSignature('encoded.jwt')->decode('encoded.jwt', false);
} catch (TokenException $e) {
die($e->getMessage());
}
validateClaims
描述
验证存在的声明 "iat"、"nbf" 和 "exp"。
参数
$jwt
(string): JWT自身或整个Authorization
头部都可以使用
返回值
- (self)
抛出异常
Bayfront\JWT\TokenException
示例
try {
$decoded = $jwt->validateClaims('encoded.jwt')->decode('encoded.jwt', false);
} catch (TokenException $e) {
die($e->getMessage());
}