这是与socket.io共享password.js用户信息的安全方法吗?

时间:2019-05-28 21:43:38

标签: node.js express socket.io passport.js express-session

我正在制作一个使用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获取用户信息是不安全的。

0 个答案:

没有答案