【问题标题】:How do you pass php session data to socket.io?你如何将 php 会话数据传递给 socket.io?
【发布时间】:2014-05-15 18:12:16
【问题描述】:

我正在编写一个应用程序,用户可以同时从多个浏览器登录,并在页面加载时与服务器上的 socket.io 建立连接。

我想在一个 redis 集中跟踪所有客户端套接字 ID socket.id,对于该登录用户,其密钥看起来像 userId:???:socketClientIds。在通过ajax调用php脚本后,我想SADD将套接字客户端ID设置为redis集。

由于我将用户 ID 保存在 php 会话变量 $_SESSION['userId'] 中,因此我可以将此用户 ID 的值传达给 socket.io 以便我可以将客户端 ID 添加到集合中,这是一种安全/实用的方式吗?

client.sadd("userId:???:socketClientIds", socket.id)

我不能相信客户端会为 userId 提供准确的值,因为它可能是伪造的。

【问题讨论】:

    标签: php node.js redis socket.io


    【解决方案1】:

    如果您在 PHP 中使用默认会话处理程序,您可以使用 groan 在节点中解析用户的会话文件。否则,您可能会考虑使用MySQLmemcachedRedis 作为会话存储,以便更容易从 PHP 和节点访问。

    【讨论】:

    • 节点如何知道要解析哪个会话文件(它不知道用户 ID 也不知道 phpsessid)?它不知道默认情况下格式为sess_$phpsessid 的文件名。
    • Socket.IO 应该能够读取随初始请求发送的包含 PHP 会话 ID 的 cookie。
    猜你喜欢
    • 2023-04-03
    • 2011-07-24
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多