Авторизация пространства имен клиента socket.io - PullRequest
4 голосов
/ 02 марта 2012

Node.js, похоже, умеет приобретать полезные модули с недостаточным количеством документации или ее отсутствием.socket.io является одним из таких модулей.Я хотел бы использовать встроенную функцию авторизации для пространств имен, но я не знаю, как это будет работать на стороне клиента.На стороне сервера они предоставляют достаточную документацию, но в этом я не уверен.

РЕДАКТИРОВАТЬ : я не хочу знать, как получить данные cookie от клиента - я знаюкак это сделать, а точнее как напрямую передавать данные (например, имя пользователя и пароль) от клиента через javascript.

1 Ответ

3 голосов
/ 03 марта 2012

Существует множество достойных документов, касающихся авторизации с Socket.IO: https://github.com/LearnBoost/socket.io/wiki/Authorizing (прокрутите вниз до «Авторизация пространства имен» и «Как клиент обрабатывает глобальную авторизацию»)

Что конкретно вы пытаетесь достичь? Звучит так, будто вы пытаетесь «отправить» имя пользователя / пароль через Socket.IO. Аутентификация Socket.IO происходит во время фазы рукопожатия, поэтому вы можете сделать следующее:

  • "Излучить" комбинацию имени пользователя и пароля (надеюсь, что вы используете TLS) после общей авторизации и отключить пользователя после неудачной аутентификации (Довольно посредственный подход IMO)

  • Вместо этого используйте информацию о сеансе на стороне сервера для аутентификации. Это, вероятно, желательный подход, так как ваши данные на стороне сервера должны содержать все, что вам нужно, чтобы выяснить, авторизован ли пользователь или нет. Вы должны полагаться на аутентификацию сеанса HTTP перед подключением к сокету, чтобы вы не передавали комбинацию имени пользователя и пароля каждый раз, когда пытаетесь подключиться к socket.io (что может быть много, если вы откатитесь назад). на XHR). Есть довольно много статей по этому поводу, но вот хорошее начало: http://www.danielbaulig.de/socket-ioexpress/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...