Я создаю веб-приложение, которое использует 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
небезопасно.