musa11971/php-jwt-decoder

一个轻量且灵活的JWT解码库。

1.0 2020-02-27 21:57 UTC

This package is auto-updated.

Last update: 2024-09-28 07:41:42 UTC


README

Latest version on packagist GitHub Tests Action Status Total downloads

轻量且易用,你还能想要什么?

轻松解码JWT

这个轻量级的PHP库可以帮助你轻松解码和验证JSON Web Tokens。

$payload = JWTDecoder::token($jwt)
                ->withKey($publicKey)
                ->decode();

安装

您可以通过composer安装此库

composer require musa11971/php-jwt-decoder

用法

基本解码

将JWT和(公共)密钥(例如PEM)作为字符串传递。

$payload = JWTDecoder::token($jwt)
                ->withKey($key)
                ->decode();

使用多个密钥解码

您可能有多个潜在的密钥,其中一个可能是JWT的正确密钥。此库允许您简单地将所有密钥传递过去,并且它会尝试每个密钥,直到验证签名。
请注意,如果没有密钥是正确的,您将遇到异常。

$keys = [...]; // Array of keys

$payload = JWTDecoder::token($jwt)
                ->withKeys($keys)
                ->decode();

忽略令牌过期时间

默认情况下,如果存在,库将检查令牌的过期时间(exp)。但是,如果您(出于任何原因)希望忽略过期时间,可以使用以下选项。

$payload = JWTDecoder::token($jwt)
                ->withKey($key)
                ->ignoreExpiry()
                ->decode();

忽略令牌'不生效前'时间

ignoreExpiry选项类似,您也可以忽略令牌的'不生效前'时间(nbf)。

$payload = JWTDecoder::token($jwt)
                ->withKey($key)
                ->ignoreNotValidBefore()
                ->decode();

处理有效载荷

解码器始终返回一个JWTPayload实例。使用此对象来访问有效载荷中的数据。

检查有效载荷是否有值

$payload->has('username'); // true
$payload->has('date_of_birth'); // false

从有效载荷中获取值

$payload->get('username'); // 'John'

将有效载荷转换为数组

$payload->toArray();

/*
 * [
 *   'username'     => 'John',
 *   'email'        => 'john@example.com',
 *   'sub'          => '1234567890',
 *   'iat'          => 1516239022,
 *   'exp'          => 1516243210
 * ]
 */

测试

composer test

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过mussesemou99@gmail.com发送电子邮件,而不是使用问题跟踪器。

致谢

感谢musa11971创建和维护此库。

特别感谢

支持我

我是一名全职软件工程学生,在业余时间开发这个库。如果您觉得这个库很有用,请考虑进行捐赠!每一分钱都很有帮助。 💜

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件