PHP如何创建和验证JWT(JSON Web Token)_PHP JWT生成与验证实战

裘德小鎮的故事
发布: 2025-09-12 13:16:01
原创
411人浏览过
使用firebase/php-jwt库可高效实现PHP的JWT创建与验证。1. 通过Composer安装库;2. 创建JWT时定义头部、载荷并用密钥签名;3. 验证JWT需检查签名有效性及过期时间等声明,确保令牌安全可靠。

php如何创建和验证jwt(json web token)_php jwt生成与验证实战

PHP要创建和验证JWT(JSON Web Token),最直接有效的方式就是利用现成的、社区广泛认可的第三方库。这东西本质上就是一种紧凑、自包含的方式,用于在各方之间安全地传输信息。你可以把它想象成一个加密的、带签名的数字信封,里面装着一些声明(claims),比如用户ID、过期时间等等。在PHP里,我们通常会借助Composer安装一个像

firebase/php-jwt
登录后复制
这样的库来搞定这一切,它把那些复杂的加密和编码细节都封装好了,用起来非常顺手。

要实现PHP中JWT的创建与验证,核心步骤就是引入一个可靠的库,然后按照它的API来操作。我个人比较推荐使用

firebase/php-jwt
登录后复制
,它功能全面,社区活跃,维护也比较及时。

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online

1. 安装库 你得通过Composer把这个库拉到你的项目里:

composer require firebase/php-jwt
登录后复制

2. 创建JWT 创建JWT其实就是构造一个包含头部(Header)、载荷(Payload)和签名(Signature)的字符串。头部通常指定了加密算法和令牌类型,载荷则承载了实际的用户信息和一些标准声明,而签名是用来验证令牌完整性的。

<?php
require_once 'vendor/autoload.php';

use Firebase\JWT\JWT;

// 你的秘密密钥,非常重要,必须保密!
$secretKey = 'your_super_secret_key_here'; 

// 头部信息
$header = [
    'alg' => 'HS256', // 使用HMAC SHA256算法
    'typ' => 'JWT'    // 类型是JWT
];

// 载荷信息 (Payload)
$payload = [
    'iss' => 'http://example.com', // 签发者
    'aud' => 'http://example.org', // 接收者
    'iat' => time(),               // 签发时间
    'nbf' => time(),               // 在此之前不可用
    'exp' => time() + (60 * 60),   // 过期时间,这里设置1小时后过期
    'data' => [                    // 自定义数据
        'userId' => 123,
        'userName' => 'JohnDoe'
    ]
];

try {
    // 使用JWT::encode方法生成JWT
    $jwt = JWT::encode($payload, $secretKey, 'HS256');
    echo "生成的JWT: " . $jwt . "\n";
} catch (Exception $e) {
    echo "生成JWT失败: " . $e->getMessage() . "\n";
}
?>
登录后复制

这里有个小细节,

JWT::encode
登录后复制
方法的第三个参数是算法名称,它需要和
header['alg']
登录后复制
匹配。我通常会直接写死,确保一致性。

3. 验证JWT 验证JWT的过程就是解码并检查其完整性和有效性。库会根据提供的密钥和算法自动验证签名,我们还需要手动检查一些载荷中的声明,比如过期时间。

<?php
require_once 'vendor/autoload.php';

use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use Firebase\JWT\ExpiredException;
use Firebase\JWT\SignatureInvalidException;
use UnexpectedValueException;

$secretKey = 'your_super_secret_key_here'; // 必须和生成时的密钥一致
$receivedJwt = 'eyJhb
登录后复制

以上就是PHP如何创建和验证JWT(JSON Web Token)_PHP JWT生成与验证实战的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号