【问题标题】:How should frontend check session?前端应该如何检查会话?
【发布时间】:2021-11-24 08:31:18
【问题描述】:

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

  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 请求。我不知道这是否有任何我没有看到的问题。

哪种方法最好?

【问题讨论】:

    标签: session session-management


    【解决方案1】:

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

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多