Аутентификация с помощью Socket.IO
Напомним, что этот проект строится на следующем стартовом проекте Glitch или клонируется из GitHub . В настоящее время вы не можете определить, кто подключен к вашему веб-соке. В то время как контейнер req.user представляет собой объект пользователя, то есть только тогда, когда ваш пользователь взаимодействует с веб-сервером и с веб-сокетами, у вас нет запроса (запроса), и для этого нет пользовательских данных. Один из способов решить проблему знания того, кто связан с вашим веб-сокетом, - это разбор и декодирование файла cookie, который содержит сессию паспорта, а затем десериализацию его для получения пользовательского объекта. К счастью, на NPM есть пакет только для этого, который превращает сложную задачу в нечто простое!
Добавьте «passport.socketio» в качестве зависимости и укажите его как «passportSocketIo». Теперь мы просто должны сказать Socket.IO, чтобы использовать его и установить параметры. Убедитесь, что это добавлено до существующего кода сокета, а не в существующем прослушивателе подключений. Для вашего сервера он должен выглядеть следующим образом:
io.use (passportSocketIo.authorize ({ cookieParser: cookieParser, ключ: «express.sid», secret: process.env.SESSION_SECRET, store: sessionStore }));Вы также можете передать «успех» и «сбой» функцией, которая будет вызываться после завершения процесса проверки подлинности, когда клиент пытается подключиться. Пользовательский объект теперь доступен на вашем объекте сокета как
socket.request.user
. Например, теперь вы можете добавить следующее: console.log('user ' + socket.request.user.name + ' connected');
и он будет подключаться к серверной консоли, которая подключилась! Представьте свою страницу, когда вы думаете, что у вас все в порядке. Если вы работаете в ошибки, вы можете проверить проект до этого момента здесь .