Как сделать авторизацию в чате node.js + socket.io на сайте, использующем PHP?

Есть сайт на php, к которому я хочу приделать чат, как самый оптимальный вариант я выбрал чат с использованием сокетов(node.js + socket.io), вроде бы все сделал, но не знаю, как реализовать авторизацию пользователей в этом чате используя данные учетной записи из php и базы данных.

p.s. использую бд MongoDB
  • Вопрос задан
  • 5218 просмотров
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
1) запрашивать из ноды скрипт на php, который будет говорить, авторизован ли пользователь. (лёгкий способ)
2) хранить в общей базе данных сессии (токен сессии), так что из ноды легко узнать, авторизован ли пользователь (хороший способ)
3) Реализовать в ноде тот же способ авторизации, что и в php. (плохой способ - придётся повторно запрашивать пароль для входа в чат)
4) использовать Redis PubSub для обмена информацией между php и node. (плохой способ - в php придётся постоянно запрашивать данные, нет ли в канале нового запроса)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Dimitriys
@Dimitriys
Можно помудрить с сессиями на PHP. Перенести хранение сессий с файлов на mongodb. Тогда и нода и рнр будут работать с общими переменными сессий.

Либо тупо при авторизации из РНР в базу писать рандомный auth_key, и сохранять его в куки.
А в ноде получать куку auth_key и искать ее в базе пользователей и например сверять IP входа.
Ответ написан
Комментировать
@globalmac
А я бы проверял авторизацию сугубо на стороне PHP, например.
И использовал бы node.js с модулем socket.oi, именно для сигналер-сервера мгновенных сообщений/уведомлений в чате.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы