к сокету?
Пытаюсь узнать, как достать заголовок Authorization из подключения юзера, чтобы по токену можно было идентифицировать.
Немного не понял, суть в том, что у меня к вебсокету подключилось N человек и каждый шлет мне события, так вот можно ли как-то выяснить от какого именно юзера пришло событие?
Из реквеста
Req.user.id
Это же не рест, тут разве есть request? @SubscribeMessage('message') handleMessage(client, payload) { this.server.emit('message', `Вам пришло новое сообщение ${payload} от ${client}`); console.log(client); } На сколько я знаю тут только client - само подключение юзера и payload - данные какие-то.
Заголовок доставать ненужно, нужно паспорту указать откуда его брать, он сам достанет и проверит
Не факт что есть в реквесте юзер. @ErPlv через rea.headers.authorization
Если есть авторизация у пользователя то проще простого, по отправленному токену определяешь кому надо отправить, по крайнем мере в другом проекте так работает авторизация(пускай и там не предусмотрели регистрацию что странно).
Если авторизацию нормально делать, то паспорт делает обьект юзера и потом по токену из кэша добавляет его к каждому запросу
https://docs.nestjs.com/websockets/gateways Я вот о чем говорю - тут нет же request-ов потому что подключение постоянное.
Если вы имеете в виду достать из хедеров в хендлере контроллера, то делается декоратором подробно тому как достается Body или Session. Посмотрите исходный код
Есть, почитай доку, exexution context. switchToWs()
Да да, тут контекст)) Вот как пример https://github.com/nestjs/nest/issues/1254
Нашел один из вариантов решения в инете - client.handshake.headers.authorization - вот так можно достать хедер из подключения. Но не пойму как будет правильнее делать.
Обсуждают сегодня