Socket.io не запускает событие подключения на неаутентифицированном сокете с паспортом - PullRequest
0 голосов
/ 29 мая 2019

У меня есть веб-сайт, созданный в nodejs и использующий паспорт для аутентификации пользователей openid и socket.io с общим сессионным хранилищем, когда клиент, не прошедший аутентификацию, не подключается, событие подключения сокета не запускается

//...app.js
var express = require("express");
var app = express();
var http = require("http").createServer(app);
var passport = require('passport');
var io = require('socket.io')(http);
var cookieParser = require('cookie-parser');
var session = require("express-session");
var MongoStore = require("connect-mongo")(session);
var mongoose = require('mongoose');
var passportSocket = require("passport.socketio");
require('mongoose-long')(mongoose);
const sessionStore = new MongoStore({
  mongooseConnection: mongoose.connection
});
mongoose.connect('foo.bar', { useNewUrlParser: true });

//...
//...
//...

io.use(
  passportSocket.authorize({
    cookieParser: cookieParser,
    key: "u_sess",
    secret: 'mysecret',
    store: sessionStore
  })
);

app.use(session({
    store: sessionStore,
    resave: true,
    name: "u_sess", 
    saveUninitialized: true,
    secret: 'mysecret'
  }));

app.use(passport.initialize());

app.use(passport.session());

io.on("connection",function(sock){
    console.log("- new user connected"+sock.request.connection.remoteAddress);
    });

я бы ожидалчто при подключении любого клиента он запускает событие подключения, но это происходит только тогда, когда паспорт аутентифицирует пользователей, вместо этого, если я отключаю passport.socketio, кто-либо запускает событие подключения, но у меня нет доступа к паспортным данным

...