news 2026/6/25 22:52:06

系统设计 017: Session 与 Cookie

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
系统设计 017: Session 与 Cookie

系统设计 017: Session 与 Cookie

  • 一、🌐 Session:服务器端的「身份档案」
    • 🔐 Session Key 有多安全?
    • 🔄 Session 是怎么诞生的?
  • 二、🍪 Cookie:浏览器里的「随身令牌」
    • 📌 Cookie 的关键特性
    • 🎫 超形象比喻
  • 三、🔗 完整流程:一次登录,全程通行
  • 四、❓ 三个灵魂问题,彻底吃透 Session
    • 1. Session 过期后,服务器会立刻删吗?
    • 2. 单设备登录 vs 多设备登录,区别在哪?
    • 3. Session 适合存在哪里?
  • 五、📌 核心总结

在 Web 世界里,登录态保持是绕不开的基础能力,而撑起这一切的,正是服务器端的Session与浏览器端的Cookie。它们像一对默契搭档,让我们只需一次登录,就能全程流畅访问,无需反复输入账号密码。今天就用清晰、好懂的方式,把这对核心概念彻底讲透✨。


一、🌐 Session:服务器端的「身份档案」

Session 是纯服务器端的会话机制,它的载体,是一张专门的Session Table(会话表)。这张表里,只存三件关键数据:

  • Session Key(Session Token):全局唯一的哈希串,相当于用户的临时身份证号

  • User ID:标记这条会话属于哪个用户,常做加密处理

  • Expire At:会话过期时间戳

🔐 Session Key 有多安全?

它由UUID / GUID这类哈希算法生成,字符集包含大小写字母、数字、下划线、横杠,组合空间大到近乎不可能重复

哪怕在海量请求下,也不会出现冲突,安全性极高🔒。

🔄 Session 是怎么诞生的?

  1. 用户提交账号密码 → 登录请求到达服务器

  2. 验证通过 → 服务器新建一条 Session 记录

  3. 生成唯一 Session Key + 绑定 User ID + 设置过期时间

  4. Session Key通过 HTTP 响应返回给浏览器


二、🍪 Cookie:浏览器里的「随身令牌」

Cookie 是什么?

它是浏览器的本地键值对存储,像一个小型哈希表,专门存放来自服务器的标记信息。

📌 Cookie 的关键特性

  • 域名隔离:A 站的 Cookie 不会带到 B 站

  • 自动携带:每次向该网站发请求,浏览器会自动带上全部 Cookie

  • 体积越小越好:数据越大,请求越臃肿、传输越慢🚶‍♂️

所以:Cookie 只存最关键的身份标记——Session Key,绝不存敏感信息。

🎫 超形象比喻

把登录比作进入会场:

  • Session Table = 后台登记本

  • Session Key = 你的入场牌

  • Cookie = 你挂在胸前的牌套

只要戴着牌,保安(服务器)一看便知你已授权,无需再查身份证。


三、🔗 完整流程:一次登录,全程通行

  1. 登录 → 服务器生成 Session,返回 Session Key

  2. 浏览器把 Session Key 存入 Cookie

  3. 后续每一次请求 → 自动带上 Cookie

  4. 服务器拿到 Session Key → 查询 Session Table

  5. 验证未过期 → 取出 User ID → 读取用户信息

  6. 保持登录状态,流畅访问✅

这就是我们一次登录、长期有效的底层逻辑。


四、❓ 三个灵魂问题,彻底吃透 Session

1. Session 过期后,服务器会立刻删吗?

不会

服务器用懒惰删除(Lazy Deleting)

过期记录先留着,等下次该 Key 再来请求,验证超时再清理,不浪费性能。

2. 单设备登录 vs 多设备登录,区别在哪?

  • 单设备登录(如微信)

Session Table 增加Device Token,标记当前登录设备。

新设备登录 → 使旧设备 Session 失效 → 旧端自动登出。

  • 多设备登录(如 QQ)

不用额外处理。

每个设备生成独立 Session,互不冲突,共用同一个 User ID。

3. Session 适合存在哪里?

  • 小站点:可放Memcache等缓存,丢失只需重新登录

  • 大型站点:必须存数据库,保证稳定

  • 最优方案:数据库 + 前端缓存,兼顾安全与速度⚡


五、📌 核心总结

  • Session:服务器的会话档案,存 Key、用户、过期时间

  • Cookie:浏览器的令牌盒,只存 Session Key

  • 机制:Cookie 带 Key → 服务器查 Session → 保持登录

  • 原则:Cookie 轻量化、Session 唯一性、删除懒惰化

理解 Session 与 Cookie,就握住了 Web 登录、身份验证、会话管理的大门钥匙。不管是前端、后端、测试,都能在这套逻辑里找到自己的设计依据💡。

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

如何用3步快速掌握OpenPLC Editor:零成本开启工业自动化编程

如何用3步快速掌握OpenPLC Editor:零成本开启工业自动化编程 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 你是否曾经被商业PLC编程软件的高昂费用吓退?是否因为复杂的工业控制开发环境而感到…

作者头像 李华
网站建设 2026/6/25 22:50:03

Shiro反序列化漏洞:从Java序列化原理到实战攻防与防御

1. 项目概述:从一份报告看透Shiro反序列化漏洞最近在复盘一份内部渗透测试报告时,发现了一个非常典型的案例:一个基于Java的Web应用系统,因为Apache Shiro框架的默认密钥问题,被轻松拿下了权限。报告里“Shiro反序列化…

作者头像 李华
网站建设 2026/6/25 22:47:36

《C语言程序设计》全套课件PDF(华中科技大学)

《C语言程序设计》全套课件PDF(华中科技大学) 课件内容: 1章:概述.pdf 2章:基本数据类型与表达式.pdf 3章:基本的标准输入与输出.pdf 4章:流程控制.pdf 5章:函数与程序结构.pdf 6章&…

作者头像 李华
网站建设 2026/6/25 22:46:46

如何快速实现STL转STEP:提升3D模型协作效率的完整指南

如何快速实现STL转STEP:提升3D模型协作效率的完整指南 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在3D设计和制造领域,STL转STEP是连接3D打印与专业CAD工作流的关键…

作者头像 李华
网站建设 2026/6/25 22:46:30

假新闻检测实战:轻量模型+特征工程+智能调参工作流

1. 项目概述:这不是“调个库跑个准确率”,而是一场对信息污染的系统性围剿你有没有在刷社交媒体时,被一条标题耸动、配图震撼的“突发新闻”瞬间点燃情绪,点开正文却发现来源模糊、逻辑断裂、数据全无?这种内容不是偶然…

作者头像 李华
网站建设 2026/6/25 22:45:09

豆包Seedance2.0上手指南:新手零门槛AI视频生成

1. 项目概述:这不是“又一个AI视频工具”,而是把专业流程拆解成厨房备菜的节奏 “豆包Seedance2.0上手指南:新手也能轻松做AI视频”——这个标题里藏着三个被多数人忽略的关键信号: “豆包”不是泛指,是字节跳动旗下明…

作者头像 李华