thinkphp6 实现jwt token验证

本文介绍JWT(JSON Web Token)的概念及其在单点登录(SSO)场景的应用,并详细讲解如何使用PHP实现JWT的生成与验证过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jwt 是什么 ?

JWT 全称 Json Web token,是为了在网络应用环境间传递声明而执行的一种基于json的开放标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者之间传递被认证的用户身份信息,以便于从服务器获取资源,也可以增加一些额外的其他业务逻辑所必须的声明信息,该token也可之间被用于认证,也可以被加密。

简而言之,我们这里要用到的就是jwt的加密和解密。

第一步 安装jwt扩展

建议使用composer安装 方便 快捷

composer require firebase/php-jwt

第二步 调用 JWT里面的 encode 和 decode方法进行生成token和验证token

这里是在app 目录下的 common.php 文件使用的 ,做成了公共方法

 首先 引入 JWT ,然后写两个方法,生成验签和验证token。

use \Firebase\JWT\JWT;
 
//生成验签
function signToken($uid){
    $key='!@#$%*&';         //这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当    于加密中常用的 盐  salt
    $token=array(
        "iss"=>$key,        //签发者 可以为空
        "aud
### ThinkPHPJWT Token 验证方法 在ThinkPHP框架中,JWT(JSON Web Token)的身份验证可以通过`thans/jwt`扩展包来实现。此扩展包提供了多种传参方式的支持,如Header、Cookie和Param等[^1]。 对于Token的创建,在控制器内通过调用`use thans\jwt\facade\JWTAuth;`命名空间下的静态方法`builder()`并传递用户识别信息作为参数即可完成令牌构建工作。例如: ```php $token = JWTAuth::builder(['uid' => 1]); ``` 为了确保接收到的有效请求确实携带合法有效的Token,可以利用`auth()`来进行校验操作。如果需要延长用户的会话有效期,则可通过`refresh()`函数刷新当前存在的Token,并将之前的版本标记为失效状态防止重复使用。获取完整的Token字符串以及解析其中负载数据分别对应如下代码片段所示: ```php // 获取完整Token字符串 $tokenStr = JWTAuth::token()->get(); // 解析Token载荷部分 $payload = JWTAuth::auth(); $uid = $payload['uid']->getValue(); ``` 此外,还可以通过配置`.htaccess`文件设置环境变量的方式处理来自HTTP头部带有授权信息的情况,具体做法是在根目录下找到或新建该文件后添加相应规则语句[^5]。 最后值得注意的是,当涉及到实际项目开发时建议按照官方文档指导进行安装部署过程中的依赖项管理等工作;同时也要注意安全方面的问题,比如妥善保管私钥材料以防泄露风险发生。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值