【发布时间】:2016-03-04 07:58:25
【问题描述】:
我正在构建一个待办事项列表应用程序,其中多个用户可以登录同一个列表并实时查看项目更新 - Google Docs 样式。我正在使用 NodeJS、Express、Socket.io 进行即时更新,并使用 client-sessions NodeJS 模块来存储 cookie 以允许用户保持登录状态。
我可以使用 Express 在页面上加载正确的项目,方法是呈现 Jade 模板,使用与请求客户端上的 cookie 关联的项目填充它,方法是在 req.session.user 下创建一个包含用户详细信息的 cookie。但是,这仅在我有一个req 来获取会话时才有效,如app.get('/', function(req, res){});。
但是,当我想通过 socket.io 直播编辑时,如何确保编辑的项目链接到正确的列表?有什么方法可以确定套接字客户端在服务器上拥有哪些 cookie?
我不想简单地在浏览器上存储一个带有客户端 ID 的变量,因为这样会很容易受到攻击,并且不会利用客户端会话的内置加密。
【问题讨论】:
-
查看socket.io/docs/server-apiclient.request 会帮你找回它们。
-
@Gary 太棒了!使用
client.request.headers.cookie确实可以让我检查 cookie。现在您知道我将如何使用client-sessions秘密对其进行解密吗? -
如果您查看客户端会话 (client-sessions.js) 的代码,它会导出解码功能。我会从那里开始。它没有记录,所以你可能需要做一些探索......
-
session.decode({'cookieName':'name'}, cookie_content);
-
我正在尝试。这就是我到目前为止所得到的:
session.util.decode({ cookieName: "session", secret: "the_secret_string" }, client.request.headers.cookie。然而这只是返回undefined。有什么想法吗?
标签: node.js cookies express socket.io