news 2026/8/28 13:36:19

JWT的Token可以被撤销吗?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JWT的Token可以被撤销吗?

JWT的Token可以被撤销吗?

JWT(JSON Web Token)本身并没有内置的撤销机制。一旦JWT被签发,它就会在有效期内一直有效,除非它的有效期(exp声明)到期。但是,有一些方法可以实现JWT的撤销或使其无效。

底层原理:
  1. Token黑名单:在服务器端维护一个被撤销的Token黑名单。当需要检查Token是否有效时,服务器会查看该Token是否在黑名单中。如果在,则拒绝访问。
  2. Token有效期:设置较短的有效期,并定期刷新Token。这样,即使一个Token被泄露,它的有效期也会很快到期,降低风险。
  3. 使用单独的认证服务器:通过OAuth等协议,使用认证服务器来管理Token的发放和撤销。认证服务器可以记录已发放的Token,并能够实现撤销操作。

通俗地说,撤销JWT的Token就像是你有一张游乐园的门票,这张门票本身没有过期时间,但游乐园可以在门口列一个“无效门票”清单。如果你的门票在这个清单上,即使你的门票看起来没问题,游乐园也不会让你进去。另一种方法是,游乐园可以给你的门票设置一个很短的有效期,比如一个小时,然后你需要定期去换票。

完整的PHP实例代码(使用黑名单方法):

以下是一个简单的PHP示例,展示如何使用黑名单来撤销JWT Token:

<?php require_once 'vendor/autoload.php'; // 引入JWT库 use \Firebase\JWT\JWT; $key = "your_secret_key"; // JWT密钥 $blacklist = ['revoked_token1', 'revoked_token2']; // 假设的黑名单列表 function isTokenRevoked($token, $blacklist) { return in_array($token, $blacklist); } function verifyToken($token, $key, $blacklist) { try { $decoded = JWT::decode($token, $key, array('HS256')); // 检查Token是否在黑名单中 if (isTokenRevoked($token, $blacklist)) { throw new Exception('Token has been revoked.'); } // Token验证成功且未撤销 return $decoded; } catch (Exception $e) { // Token验证失败或已被撤销 return false; } } // 假设我们有一个待验证的Token $jwtToken = 'your_jwt_token_here'; // 这里替换为你的JWT Token // 验证Token并检查是否撤销 $result = verifyToken($jwtToken, $key, $blacklist); if ($result) { echo "Token is valid and not revoked."; } else { echo "Token is invalid or revoked."; } ?>

在这个示例中,我们定义了一个$blacklist数组来模拟被撤销的Token列表。verifyToken函数用于验证Token并检查它是否在黑名单中。如果Token在黑名单中,则抛出一个异常表示Token已被撤销。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 13:35:56

Open WebUI 部署指南:新手 5 分钟跑通本地 AI 对话界面

Open WebUI 部署指南&#xff1a;新手 5 分钟跑通本地 AI 对话界面 【免费下载链接】open-webui User-friendly AI Interface (Supports Ollama, OpenAI API, ...) 项目地址: https://gitcode.com/GitHub_Trending/op/open-webui Open WebUI 是一个自托管的 AI 对话界面…

作者头像 李华
网站建设 2026/8/28 13:33:48

微调模型如何扛住真实场景?拆解Omega-S功能韧性评估框架

拿到一个微调后的LLM&#xff0c;最常见的行为是什么&#xff1f;不是上线&#xff0c;而是先跑一遍评测集。分数不错&#xff0c;大家松一口气&#xff0c;然后一放到真实场景里&#xff0c;用户稍微换几个说法&#xff0c;模型就开始答非所问、格式错乱、甚至完全偏离任务。O…

作者头像 李华
网站建设 2026/8/28 13:33:43

Kali 更换源(超详细,附国内优质镜像源地址)

进入管理员下的控制台。 输入密码后点击“授权”。 在控制台内输入下面的内容。 vim /etc/apt/sources.list敲击回车后会进入下面的页面。 来到这个页面后的第一部是按键盘上的“i”键&#xff0c;左下角出现“插入”后说明操作正确。 使用“#”将原本的源给注释掉。 从下面的…

作者头像 李华
网站建设 2026/8/28 13:32:46

从OpenAI Build Week看Codex:AI编程进入Agent工程管理时代

如果你最近在看 AI 编程、Agent 工具链相关的内容&#xff0c;大概率刷到过 OpenAI Build Week 的消息。每次 OpenAI 办完这类黑客松活动&#xff0c;总能看到一堆参会者晒项目、晒 Demo、晒奖杯。很多人第一反应是看热闹&#xff1a;谁拿了第一名、项目长什么样、奖品是什么。…

作者头像 李华
网站建设 2026/8/28 13:30:28

Python实现模糊数学运算:从隶属度函数到模糊控制系统实战

1. 从“模糊”到“清晰”&#xff1a;为什么我们需要模糊数学运算 在传统的数学世界里&#xff0c;一个元素要么属于一个集合&#xff0c;要么不属于&#xff0c;非黑即白&#xff0c;界限分明。比如&#xff0c;温度“高于25度”是一个清晰的概念&#xff0c;25.1度属于&#…

作者头像 李华
网站建设 2026/8/28 13:24:40

andrej-karpathy-skills:LLM 编码规范指南

andrej-karpathy-skills&#xff1a;LLM 编码规范指南 【免费下载链接】andrej-karpathy-skills A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathys observations on LLM coding pitfalls. 项目地址: https://gitcode.com/GitHub_Tre…

作者头像 李华