nodejs + websocket会话混乱

时间:2013-09-05 19:42:40

标签: node.js session express sockjs

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

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

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

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

编辑:

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

2 个答案:

答案 0 :(得分:0)

您可以查看https://github.com/jfromaniello/passport.socketio。我已经习惯了它,并且它非常简单。

答案 1 :(得分:0)

对于会话恢复,大多数情况下都会使用Cookie。 SockJS允许使用cookie,但只使用原始cookie而没有任何其他安全措施 - 有点可怕,特别是如果你的SockJS在另一个域上并且cookie将具有不确定的Origin范围。

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

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