首页 > 解决方案 > 前端应该如何检查会话?

问题描述

我正在为网站开发用户会话管理。流动:

  1. 会话不存在/无效,前端将用户引导到登录页面
  2. 用户登录
  3. 后端在其数据库中创建会话
  4. 后端创建会话 ID cookie
  5. 前端在每个请求中传递会话 ID cookie 以进行身份​​验证

我的问题:前端如何知道会话是否不存在/无效?需要处理用户更改密码的情况,然后他们跨设备的所有会话都被撤销。所以前端需要以某种方式检查后端。

可能的方法:

  1. 后端提供了一个 GET /session API,它告诉 session 是否处于活动状态。前端在每个请求之前调用它,如果会话不活动,则重定向到登录。但这似乎有很多额外的要求。

  2. 前端在网站的每个浏览器加载时调用 GET /session (CTRL-R)。如果会话在经过身份验证的页面上无效,则页面在重新加载之前将无法工作,这将进入登录。如果未认证和已认证页面完全分开,这可能就足够了。

  3. 如果会话处于非活动状态,后端 API 会返回 HTTP 401。当前端看到时,它会引导用户登录。这比 #2 更实时,不需要额外的 GET /session 请求。我不知道这是否有任何我没有看到的问题。

哪个是最好的方法?

标签: sessionsession-management

解决方案


前端不应处理任何会话管理逻辑。这样做完全是后端的责任。前端应该只对后端响应的内容做出反应。选项 3 将是理想的解决方案。这将确保一致性和安全性。


推荐阅读