Таким образом, у меня есть приложение рабочий узел js с socket.io как бэкенд и нормальный JavaScript как frontend. Мое приложение имеет систему входа в систему, которая в настоящее время просто сделала, чтобы клиент отправил ее данные входа в систему, как только оно соединено.
Теперь я полагал, что будет намного более хорошо отправить данные входа в систему наряду с handshakeData, таким образом, у меня сможет непосредственно быть пользователь, зарегистрированный, в то время как соединение (вместо после установления соединения) соответственно отказывается от авторизации, когда данные входа в систему недопустимы.
Я думаю, что было бы лучше поместить мои дополнительные данные в часть заголовка handshakeData, таким образом, какие-либо идеи, как я мог сделать это? (Не имея необходимость изменять socket.io, если это возможно, но если это - единственный путь, я могу жить с ним),
Старый поток, но принятие Вас хранит Ваш jwt идентификатор маркера/сессии в сеансовых куки (стандартный материал), это передается серверу по умолчанию так или иначе при выполнении квитирования (socket.io-клиент), я заметил. Есть ли что-то не так только с получением подлинной информации для квитирования (через промежуточное программное обеспечение или on.connection) через cookie? например,
io.on('connection', function(socket) {
// assuming base64url token
const cookieStr = socket.handshake.headers.cookie
const matchRes =
cookieStr == null
? false
: cookieStr.match(/my-auth-token=([a-zA-Z0-9_.-]+)/)
if (matchRes) {
// verify your jwt...
if ( tokenIsGood(matchRes[1]) {
// handle authenticated new socket
} else {
socket.emit('AUTH_ERR_LOGOUT')
socket.disconnect()
}
} else {
socket.emit('AUTH_ERR_LOGOUT')
socket.disconnect()
}
}
я использую это теперь для проекта, и он хорошо работает.