Как аутентифицировать Socket.IO по идентификатору сеанса PHP через домены - PullRequest
4 голосов
/ 03 ноября 2011

У меня есть настройка узла / Socket.IO на node.mydomain.com и стек Apache / PHP на www.mydomain.com.

В настоящее время я выполняю аутентификацию примерно так:

  1. Клиент : при подключении отправьте пользовательское событие authorization, включающее PHPSESSID, на сервер
  2. Сервер : включено authorization, позвоните по номеру api.php, используя этот файл cookie для получения информации о пользователе, отправьте клиенту эту идентификационную информацию
  3. Клиент : теперь можно выполнять действия с использованием этой идентификационной информации

Это немного глупо, поскольку в Socket.IO есть место для аутентификации ( на этой вики ), которое я хотел бы использовать.Проблема в том, что я не знаю, как отправить информацию куки-файла PHPSESSID с клиента на сервер.Они находятся в разных доменах, поэтому браузер не включает их в запрос.

Есть идеи?

1 Ответ

1 голос
/ 21 апреля 2012

Я бы рекомендовал переключить обработку сеанса и использовать вместо этого Redis, что также быстрее, чем обработка сеанса на основе файлов по умолчанию.

Сначала установите сервер Redis . После этого вы добавляете расширение phpredis в PHP, сначала скомпилировав его, а затем сконфигурировав свой php.ini для его использования.

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

Из Node.js вы можете затем прочитать эти сеансы с помощью модуля node_redis .

...