首页/新闻资讯/正文详情

Cookie / Session / Token / JWT:有状态、无状态,一次性讲清楚

发布时间:2026/9/24 14:34:27 来源:云帆数科 栏目:资讯中心
Cookie / Session / Token / JWT:有状态、无状态,一次性讲清楚
适合面试复盘通俗易懂无晦涩废话核心定义什么是有状态、无状态判断标准只有一条服务端是否保存会话信息✅有状态Stateful服务端存储「身份凭证 ↔ 用户会话」的映射关系。每次鉴权服务端需要去查询这份存储确认登录状态。✅无状态Stateless服务端不存储任何会话记录。身份信息全部封装在凭证本身鉴权只校验凭证合法性不需要查询外部存储。注意有/无状态描述的是服务端和客户端浏览器无关。1. CookieCookie 不是登录认证方案它只是浏览器本地存储小块文本的载体。 特点浏览器自动携带有跨域、大小限制。 Cookie 里面可以放 SessionId也可以放 Token。2. Session Cookie传统有状态方案流程用户登录成功服务端在本机内存生成会话数据生成唯一 SessionId。通过 Cookie 把 SessionId 返回浏览器浏览器自动保存。后续请求浏览器自动带上 CookieSessionId。服务端拿到 SessionId查询本机内存里的会话识别用户。痛点负载均衡场景如果多台服务器做负载均衡第一次请求打到A服务器生成Session下一次请求打到B服务器B机器内存没有这个Session判定未登录。 两种老解法Session粘滞固定用户请求到同一台机器。缺点负载不均服务器宕机会话丢失。Session共享把会话统一存入Redis。 变成Session Redis依然是有状态。Session本质会话数据存在服务端SessionId只是一个查找key。3. Token 和 JWT 的关系Token是身份令牌的统称JWT只是Token的一种标准化格式。所有JWT都是Token但Token不一定是JWT。① 原生JWT无状态TokenJWT格式三段式header.payload.signatureheader签名算法payload存放用户ID、过期时间等信息Base64编码不是加密可以直接解码查看不能放密码等敏感数据signature签名用来校验JWT有没有被篡改流程登录成功后端打包用户信息过期时间使用密钥签名生成JWT返回。服务端不保存这条JWT的任何记录。前端保存JWT每次请求放在请求头携带。服务端只校验签名是否合法校验通过直接从payload拿用户信息不用查询任何存储。优点天然适配分布式、负载均衡无需共享存储。 缺点签发之后没到过期时间无法主动失效很难实现强制下线、踢用户。如果给JWT增加黑名单内存/Redis存失效的JWT每次校验签名后还要查黑名单此时就变成有状态了。工程上一般不推荐这么做。② 随机字符串Token常用有状态Token搭配Redis登录时生成一串随机UUID作为TokenToken字符串本身不带用户信息。 流程登录成功生成随机Token在Redis存储映射token - 用户信息、过期时间设置TTL。返回随机Token给前端前端放在Header携带。每次请求后端拿Token查询Redis查到记录代表登录有效。退出登录/强制下线直接删除Redis中这条Token即可。优点支持主动登出、多端登录踢人分布式多服务器共享Redis完美解决负载均衡问题。 缺点每次请求需要一次Redis查询存在少量IO开销。关键点有状态Token不一定非要用Redis也可以存MySQL、内存。只是Redis高性能自带过期TTL是工业首选。4. 高频误区澄清❌ 误区不带Redis就是无状态带Redis就是有状态。 ✅ 纠正是否有状态看服务端有没有保存会话映射不是看有没有Redis。 比如JWT内存黑名单没有Redis但服务端维护失效列表依然是有状态。❌ 误区Cookie就是有状态Token就是无状态。 ✅ 纠正Cookie只是存储载体可以承载SessionId有状态也可以承载Token。Token分两种原生JWT无状态随机串TokenRedis是有状态。❌ 误区TokenRedis是全新技术和Session完全不同。 ✅ 纠正随机TokenRedis和SessionRedis底层思想几乎一致都是「key查找存储中的会话」。区别仅在于SessionId由浏览器Cookie自动携带Token由前端手动放在请求头更适合前后端分离、小程序、APP。5. 方案对比表方案状态类型分布式支持主动登出鉴权方式适用场景内存SessionCookie有状态差粘滞或Session共享✅查询本机内存传统单体服务SessionRedis有状态✅✅查询Redis传统服务端渲染项目随机TokenRedis有状态✅✅查询Redis前后端分离、APP、小程序企业主流原生JWT无状态✅❌校验签名简单接口几乎不需要强制下线6. 一句话总结可直接放在博客末尾/面试背诵有状态和无状态核心看服务端是否保存会话数据。 Cookie是存储载体Session是有状态会话方案。 Token是身份令牌统称原生JWT是无状态靠签名校验随机字符串Token搭配Redis是有状态靠查表鉴权。 分布式项目绝大多数业务系统优先选择随机Token Redis方案。如果你想我可以再精简一版【面试口述精简版】单独拿出来或者帮你加一段时序图的markdownMermaid代码博客里直接渲染时序图。

相关推荐

面试中人才测评工具到底在测什么?2026 深度科普解读
面试中人才测评工具到底在测什么?2026 深度科普解读

一、简历漂亮,面试却屡屡碰壁:测评工具到底在测什么不少求职者有这样的困惑——简历过关、面试对答如流,最终却卡在了线上测评环节。也有企业HR反馈,每年采购测评工具投入不小,但真正影响用人决策的测评结果不足四分之… · 2026/9/24 14:34:21

全球环磷酰胺市场分析:经典抗肿瘤药物迎来稳定增长周期
全球环磷酰胺市场分析:经典抗肿瘤药物迎来稳定增长周期

环磷酰胺是临床应用超半个世纪的经典烷化剂类化疗药物,通过抑制肿瘤细胞DNA合成发挥抗癌作用,同时具备免疫抑制调节功效,是淋巴瘤、乳腺癌等实体瘤,以及类风湿性关节炎等自身免疫性疾病一线治疗方案的核心基础用药。近年来全球抗肿… · 2026/9/24 14:34:21

FC1179/FC1178BC量产识别失败原因与精准工具匹配指南
FC1179/FC1178BC量产识别失败原因与精准工具匹配指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 14:34:07

EMQX HOCON 0.46.3 升级:数组型配置项敏感值脱敏与校验错误日志安全加固解析
EMQX HOCON 0.46.3 升级:数组型配置项敏感值脱敏与校验错误日志安全加固解析

后端物联网消息队列通信 【免费下载链接】emqx The most scalable and reliable MQTT broker for AI, IoT, IIoT and connected vehicles 项目地址: https://gitcode.com/gh_mirrors/em/emqx 点击查看 免费下载 导读 本文围绕 EMQX 仓库中 changelog 条目 fix-183… · 2026/9/24 15:12:27

Prometheus Operator 与 Thanos 集成实战:Sidecar 对象存储备份与 ThanosRuler 全局规则评估
Prometheus Operator 与 Thanos 集成实战:Sidecar 对象存储备份与 ThanosRuler 全局规则评估

云原生可观测性 【免费下载链接】prometheus-operator Prometheus Operator creates/configures/manages Prometheus clusters atop Kubernetes 项目地址: https://gitcode.com/gh_mirrors/pr/prometheus-operator 点击查看 免费下载 Thanos 是一组可组合的组件&am… · 2026/9/24 15:12:26

embeddingModel操作milvus数据库集合
embeddingModel操作milvus数据库集合

案例: 不是"创建集合的那一瞬间",而是"第一次使用时" // 应用启动时(MilvusConfig执行) // 步骤1: 创建milvusClient Bean public MilvusServiceClient milvusClient() {return new MilvusServiceClient(...); // ✓ 只是连接数据库 }// 步骤… · 2026/9/24 15:12:02

【Dv3Admin】Vue3动态配置首页仪表盘
【Dv3Admin】Vue3动态配置首页仪表盘

在做首页仪表板时,最麻烦的不是图表怎么画,而是组件来源动态、布局可拖拽、权限要隔离、还要能保存恢复。 Home 模块就是围绕这几件事做的一套标准化实现:后端下发组件定义与权限,前端负责动态渲染、拖拽布局、过滤无权限组件并紧… · 2026/9/24 15:12:02

Instant 2025 年 2 月更新全解读:Explorer 升级、级联删除、`$files` 存储与 InstaQL `fields` 子句实战
Instant 2025 年 2 月更新全解读:Explorer 升级、级联删除、`$files` 存储与 InstaQL `fields` 子句实战

后端数据库 【免费下载链接】instant Instant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams — everything you need to ship apps your users will love. 项目地址: https://gitcode.com/gh_mirrors/inst/i… · 2026/9/24 15:11:42

Yii 2 组件(Component)完全指南:掌握属性、事件与行为三大特性的基石机制
Yii 2 组件(Component)完全指南:掌握属性、事件与行为三大特性的基石机制

后端Web框架 【免费下载链接】yii2 Yii 2: The Fast, Secure and Professional PHP Framework 项目地址: https://gitcode.com/gh_mirrors/yi/yii2 点击查看 免费下载 本文围绕 Yii 2 框架的核心抽象——组件(Component)展开,系统… · 2026/9/24 15:11:42

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码