Это безопасный способ обмена информацией о пользователе passport.js с socket.io? - PullRequest
0 голосов
/ 29 мая 2019

Я создаю веб-приложение, которое использует passport.js, express, express-session и socket.io. В настоящее время я делюсь информацией о сеансе с socket.io, выполняя:

var sessionMiddleware = session({
    secret: 'keyboard cat',
    key: 'express.sid',
    resave: true,
    saveUninitialized: true,
    store: new MongoStore({url : url})}
    )

app.use(sessionMiddleware);
app.use(passport.initialize());
app.use(passport.session());

io.use(function(socket, next) {
    sessionMiddleware(socket.request, socket.request.res, next);
});

Это позволяет мне получить доступ к socket.request.session из обратного вызова соединения socket.io. Тем не менее, паспорт помещает информацию о пользователе в req.user после аутентификации пользователя, и я не могу получить доступ к req.user из socket.io. Поэтому мне интересно, если внутри обработчика маршрута безопасно для меня просто сохранить req.user в req.session, чтобы я мог получить к нему доступ из socket.io и определить, вошел ли пользователь в систему, и получить его информацию. Так что я буду делать это:

app.get('/', function(req, res){
  req.session.user = req.user;
  res.render('index');
});

Это позволяет мне получить доступ к socket.request.user. Безопасна ли эта техника? Я обеспокоен этим, потому что я узнал, что получение информации о пользователе от req.session.passport.user небезопасно.

...