跳到正文

会话

Session

中级通用

会话(Session)是应用在一段时间内识别同一次登录、关联用户身份的机制。它让网站不用每打开一页都重新登录;比如你登录后台后,切换页面仍能访问自己的工作区。

你可能会说:「我想让用户登录后台后切换页面也不用重新登录,退出后就不能再访问。」

读之前建议先了解

动手看看

登录浏览器应用服务会话存储
1

你在浏览器登录后台,账号信息先交给应用服务验证;这时还没有建立会话。

要点

  1. 1

    登录成功后建立身份关联

    你提交账号和密码时,应用先核验身份。通过后,它会给后续请求一个可识别的凭据,并把它关联到这次登录;所以用户打开下一页时,不必再输入密码。

  2. 2

    后续请求凭凭据找到用户

    浏览器可以用 Cookie 携带会话凭据。服务端据此找到对应用户,再判断这次请求能做什么。实现方式不止一种,关键是凭据不能让别人轻易冒用。

  3. 3

    退出登录要结束访问资格

    会话通常有有效期,也可能被主动撤销。如果后台提供“退出所有设备”,光清掉当前浏览器的 Cookie 不够;我们还得让其他设备持有的会话凭据失效。

容易混淆的地方

身份认证回答“你是谁”,会话让应用在后续请求中持续认出你;权限控制回答“认出你之后,允许你做什么”。Cookie 常被用来携带会话凭据,但它只是存放和发送数据的方式,不等于会话本身。这里的会话也不是 AI 产品里的“对话历史”。

什么时候用

适合用

  • 做需要登录的管理后台时,让用户切换页面或刷新页面后,仍能访问自己的工作区。
  • 做共享设备上的账号退出功能时,让退出登录后的旧凭据无法继续访问私人数据。
  • 做多设备登录管理时,让用户查看并结束其他设备上的登录状态。

不适合用

  • 做完全公开的产品介绍页,访客无需登录就能浏览;直接提供公开页面,不必为每位访客建立登录会话。
  • 后端服务需要定时调用另一个服务的 API,而不是代表某个登录用户操作;考虑使用服务凭据等机器间认证方案。

练一练

你在做一个支持多设备登录的后台。用户在手机上点了“退出所有设备”,电脑上的页面刷新后也不能再访问私人数据。哪种方案最符合这个目标?

让 AI 帮你做

请为这个管理后台设计登录会话:登录后刷新和切换页面保持登录;退出当前设备时结束当前会话,退出所有设备时撤销该用户的其他会话。请说明凭据如何传递、服务端如何判断有效性,以及未登录请求如何处理。

接下来学什么