如何针对跨域的PHP会话ID验证Socket.IO

时间:2011-11-02 22:40:01

标签: php session authentication cookies socket.io

我在node.mydomain.com上有一个node / Socket.IO设置,在www.mydomain.com上有一个Apache / PHP堆栈。

目前我正在使用类似的方式进行身份验证:

  1. 客户端:在连接时,发送包含的自定义authorization事件 PHPSESSID到服务器
  2. 服务器:在authorization上,使用此Cookie拨打api.php以获取用户信息,向客户端发送此身份信息
  3. 客户:现在可以使用此身份执行操作
  4. 由于Socket.IO有一个我想要使用的身份验证(On this wiki),所以这有点麻烦。问题是我不知道如何将PHPSESSID cookie信息从客户端发送到服务器。它们位于不同的域中,因此浏览器不会将它们包含在请求中。

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我建议切换会话处理并使用Redis,这也比基于默认文件的会话处理更快。

首先安装Redis server。之后,通过首先编译它然后配置php.ini来使用它,将the phpredis extension添加到PHP。

extension=redis.so
session.save_handler = redis
session.save_path = "tcp://localhost:6379/"

然后,您可以使用node_redis模块从Node.js读取这些会话。