【问题标题】:nodejs + websocket session confusionnodejs + websocket 会话混淆
【发布时间】:2013-09-09 18:38:39
【问题描述】:

我真的很困惑如何使用我的 nodejs 应用程序设置会话。我正在使用 express + socksjs,但我无法理解如何将 ws 连接绑定到特定的用户会话。

在 sockjs 页面上,他们说不要使用 cookie 进行授权,但是如果我在建立 ws 连接时不从 cookie 发送会话(之前通过 express 设置会话的 cookie)我如何绑定该特定的 ws 连接与特定用户?

我想实现这些简单的目标: - 用户(登录或访客)访问页面并建立 ws 连接 - 我将连接 ID 和会话的键值对存储在 redis 中,因此我知道给定 ws 连接属于哪个用户

如果在建立 ws 连接后无法从 cookie 发送会话,该怎么办?即使我想要,由于是 HttpOnly,cookie 不可用,因此无法通过 js 读取。

编辑:

this google group post 建议我在第一条消息中发送加密的用户详细信息,这听起来不错,但我仍然不确定我应该从哪里获取这些详细信息。我一直是通过会话和 cookie 来完成的……

【问题讨论】:

标签: node.js session express sockjs


【解决方案1】:

在大多数情况下使用 Cookie 来恢复会话。 SockJS 确实允许使用 cookie,但仅使用原始 cookie 而没有任何其他安全措施 - 有点吓人,尤其是如果您的 SockJS 在另一个域上并且 cookie 将具有不确定的 Origin 范围。

考虑使用 Token 方法进行身份验证。

如果你真的需要使用 cookie,请阅读这里,所有的理由都在那里,我不会只是重复已经解释过的情况:https://github.com/sockjs/sockjs-node/pull/29#issuecomment-2733120

【讨论】:

    【解决方案2】:

    您可以查看https://github.com/jfromaniello/passport.socketio。我已经用过它了,它很容易上手。

    【讨论】:

      猜你喜欢
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 2015-11-25
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      相关资源
      最近更新 更多