Я пытаюсь выполнить аутентификацию над сокетами с sailsjs
и passport
.
Кажется, что проблема заключается в том, что соединение сокета не имеет сеанса и что sailsjs издевается над объектом запроса, в результате чего он не имеет установки промежуточного ПО Passport. Это заставило nodejs выдавать ошибку, заявив, что объект req
не имеет метода под названием logIn
.
Итак, я пробовал следовать фрагменту кода, предоставленному @xdissent здесь: Sails.js + Passport.js аутентификация через websockets, что, действительно, позволяет мне войдите без ошибок. Или это..? Оказывается, он что-то делает, Но я понятия не имею, что. Поскольку после извлечения req.user
через другой (сокет) запрос, я получаю пустой объект.
Я тоже посмотрел на redis. Из этого вышло:
redis 127.0.0.1:6379> keys *
1) "waterline:broadcasting:_sequences:id"
2) "sess:aDJI0YHzh17E3AMjtKsZSijs"
redis 127.0.0.1:6379> get "sess:aDJI0YHzh17E3AMjtKsZSijs"
"{\"cookie\":{\"httpOnly\":true,\"path\":\"/\"}}"
redis 127.0.0.1:6379>
Итак, есть сеанс, который не хранится в нем.
Короче говоря, как я могу получить Passport и sailsjs, чтобы играть красиво над сокетами.
Обновление: Мне бы хотелось получить информацию о сеансах, сокетах и файлах cookie с парусами в целом. Поэтому, если я задал материал в сеансе и обновил браузер, я бы хотел, чтобы он все еще был там. Если я делаю вызов xhr на той же странице, что и сокет, не должен ли он быть тем же самым сеансом?