Session
一句话
Session 是服务器为一个用户保存的连续访问状态,靠 Session ID 把多次请求认成同一个人。
大白话
Session 像寄存处:你存包后拿到一张号码牌,包放在柜台里面;之后每次出示号码牌,工作人员就知道哪个包是你的。
比喻的边界
号码牌被别人拿到,对方也能冒充你,所以 Session ID 要保密、要会过期;而且状态不一定都放在服务器,也有方案把签过名的状态交给客户端保存。
拿去就能用
我在做的登录,想用服务端 Session 记住登录状态,希望。帮我写创建、读取和退出时销毁 Session 的代码,并告诉我怎么验证退出后旧的 Session 真的失效。如果框架或登录服务已经自带会话管理,优先用现成的,先告诉我有没有。
还差:应用名称、保持登录多久,发给 AI 前记得换掉
本地运行时登录正常,部署到线上后刷新几次就会掉线。我怀疑线上有多个实例,Session 只存在其中一个的内存里。先帮我验证这个猜测,不对就换方向,别直接换登录方案。
我想做到“在新设备登录后,旧设备自动退出”。帮我设计 Session 怎么记录设备、怎么让旧的失效,先说方案和对现有用户的影响,等我确认再写代码。
别这样说 → 这样说
别这样说
Session 老是过期,帮我改长一点。
这样说
我的后台管理页登录后大约 10 分钟不操作就被退出,我希望是 2 小时。帮我找出 Session 的过期时间在哪里设置,告诉我改长有什么安全影响,等我确认再改。
差别:给出了现在和期望的时长,并要求先说清安全影响。
误解Session 和 Cookie 是一回事。
其实是Cookie 是浏览器存东西的地方,Session 是服务器记住用户的机制;常见做法是 Cookie 里只放 Session ID,真正的登录状态留在服务器上。
展开专业理解
一次 Web 会话是同一用户的一连串请求和响应。服务器创建会话后生成 Session ID,客户端多用 Cookie 携带它,这个 ID 在会话期间就相当于临时的登录凭证。安全上要做到:ID 足够随机,登录或权限变化后重新生成,闲置一段时间自动过期,退出时在服务器端销毁。
来源
- OWASP:会话管理速查表 核对于 2026-09-26
- MDN:使用 HTTP Cookie 核对于 2026-09-26