на socket.io мне всегда нужно проходить аутентификацию с каждым emit (), а не только при установлении соединения? - PullRequest
0 голосов
/ 16 января 2019

Одна из причин, по которой я переключился с REST на socket.io , заключается в том, что последнее является сообщением без сохранения состояния, и я обнаружил, что если мне придется добавить много токенов для каждого излучения, это приведет к раздутию всего общения много.

Является ли это основным стандартом безопасности для общения в чате с помощью socket.io?

Итак, скажем, для такого приложения, как Grindr , лучшим подходом было бы что-то вроде JWT с каждым emmit? через паспорт?

Приветствия

1 Ответ

0 голосов
/ 16 января 2019

То, как я это делаю, - это аутентификация один раз при входе в систему и создание токена аутентификации на стороне сервера. На сервере я сопоставляю токен с данными пользователя и присоединяю только имя пользователя к объекту сокета. Я отправляю токен клиенту только один раз в ответ на вход. Затем в любое событие, для которого вы хотите проверить личность пользователя (читай: почти все события), вы отправляете токен вместе с ним и проверяете пользователя на стороне сервера на основе токена и имени пользователя, прикрепленного к объекту сокета, получающего сообщение.

Обратите внимание, что, хотя JWT, безусловно, является одним стандартом, при использовании этого подхода вам не нужен какой-либо конкретный формат токенов. Вам просто нужен уникальный идентификатор некоторого рода в качестве токена, поэтому даже 5-символьный случайный (но уникальный!) Токен должен подойти, не оставляя лишних раздутий в ваших сообщениях.

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