登录
No.35核心2 条来源

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 足够随机,登录或权限变化后重新生成,闲置一段时间自动过期,退出时在服务器端销毁。

来源

  1. OWASP:会话管理速查表 核对于 2026-09-26
  2. MDN:使用 HTTP Cookie 核对于 2026-09-26