lcobucci/jwt
时间: 2024-01-03 08:22:03 浏览: 28
lcobucci/jwt是一个PHP库,用于生成和解析JSON Web Tokens(JWT)。JWT是一种用于在网络应用之间安全传输信息的开放标准(RFC 7519)。它由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。
以下是使用lcobucci/jwt库生成和解析JWT的示例:
1. 生成JWT:
```php
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Signer\Hmac\Sha256;
$signer = new Sha256();
$token = (new Builder())
->setIssuer('http://example.com') // 设置签发者
->setAudience('http://example.org') // 设置接收者
->setId('4f1g23a12aa', true) // 设置唯一标识符
->setIssuedAt(time()) // 设置签发时间
->setExpiration(time() + 3600) // 设置过期时间
->set('uid', 1) // 设置自定义数据
->sign($signer, 'your-256-bit-secret') // 使用密钥签名
->getToken(); // 获取JWT
echo $token; // 输出生成的JWT
```
2. 解析JWT:
```php
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\ValidationData;
$token = 'your-jwt-token'; // 要解析的JWT
$jwt = (new Parser())->parse($token); // 解析JWT
$signer = new Sha256();
// 验证JWT的签名和有效性
$validationData = new ValidationData();
$validationData->setIssuer('http://example.com');
$validationData->setAudience('http://example.org');
$validationData->setId('4f1g23a12aa');
$validationData->setCurrentTime(time());
if ($jwt->validate($validationData) && $jwt->verify($signer, 'your-256-bit-secret')) {
echo 'JWT验证通过';
// 获取JWT中的数据
echo $jwt->getClaim('uid');
} else {
echo 'JWT验证失败';
}
```
请注意,上述示例中的密钥(your-256-bit-secret)是用于签名和验证JWT的关键。在实际使用中,应该使用安全的随机生成的密钥,并妥善保管。