【问题标题】:Socket.io how to check a client's cookie data?Socket.io 如何检查客户端的 cookie 数据?
【发布时间】: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


【解决方案1】:

评论socket.io/docs/server-api

client.request 将帮助您检索它们。

如果您查看客户端会话 (client-sessions.js) 的代码,它会导出解码功能。 session.decode({'cookieName':'name'}, cookie_content);

【讨论】:

    猜你喜欢
    • 2017-12-14
    • 1970-01-01
    • 2019-04-23
    • 2013-11-22
    • 2013-12-31
    • 2011-06-12
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    相关资源
    最近更新 更多