У меня есть веб-сайт, созданный в 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, кто-либо запускает событие подключения, но у меня нет доступа к паспортным данным