我正在制作一个使用password.js,express,express-session和socket.io的Web应用程序。目前,我正在通过以下方式与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.io连接回调内部访问socket.request.session
。但是,护照在用户进行身份验证后会将用户信息放入req.user
中,并且我无法从socket.io访问req.user
。因此,我想知道在路由处理程序中是否可以安全地将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
获取用户信息是不安全的。