@vetsmen

Как решить проблему авторизации в Socket.io?

У меня написана авторизация на express (через passport.js), сокеты получают авторизацию через passport.socketio при вызове io.use:
io.use(passportSocketIo.authorize({
	cookieParser: cookieParser, 
	key:          'express.sid',
	secret:       'keyboard cat', 
	store:        sessionStore,      
}));

Проблема вот в чем: когда я нахожусь в двух вкладках и выхожу из сайта в одной, то в другой продолжает работать сокет и в request (socket.request.user.logged_in) пишет true, поэтому все действия выполняются так, как будто пользователь все еще авторизован.
Я хочу сделать так: при логауте вызвать метод passportSocketIo.authorize, чтобы он переопределил socket.request, но как это сделать? И вообще, какие есть мысли по решению данной проблемы? Спасибо!
  • Вопрос задан
  • 411 просмотров
Пригласить эксперта
Ответы на вопрос 1
evgeniy2194
@evgeniy2194
PHP, js developer
Когда вы подключаетесь в соседней вкладке, у вас открывается новое соединение с авторизацией.

Как вариант:
1. Не пускать пользователя другой раз. При заходе в новом окне либо разрывать старое соединение либо сообщать о том что он уже подключен.
2. Отправить пользователю запрос о том что он разлогинился, и соответственно разлогинить его во всех его соккетах.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
19 июн. 2024, в 11:37
2500 руб./за проект
19 июн. 2024, в 11:20
4800 руб./за проект
19 июн. 2024, в 11:09
3000 руб./за проект