通过Passport获取当前用户的详细信息js

通过Passport获取当前用户的详细信息js

问题描述:

我正在使用Passport js和Express,并且很困惑在应用程序的不同组件中获取当前用户的详细信息。通过Passport获取当前用户的详细信息js

我想获取用户名,并在用户连接到套接字时将其放入数组中。在我的server.js中,我需要我的路由和socket.io文件。

require('./app/routes.js')(app, passport); 
require('./app/sockets.js').listen(server, passport); 

在我的socket.js文件中,我在用户连接时发生了一些事件。

var users = []; 
exports.listen = function(server, passport){ 
    var socketio = require('socket.io'); 
    io = socketio.listen(server); 

    io.on('connection', function(socket){ 
     users.push({ 
      id: socket.id 
     }); 
     socket.emit('new user', socket.id); 
     console.log('user count: ' + io.engine.clientsCount); 
     console.log('users length: ' + users.length); 

     socket.on('send message', function(message){ 
      if (/\S/.test(message)) { 
       io.sockets.emit('new message', message); 
       console.log('new message: ' + message); 
      } 
     }); 
     socket.on('disconnect', function(socket){ 
      console.log('user disconnected: ' + users.length); 
      users.splice(users.indexOf(socket.id), 1); 
     }); 
    }); 
}; 

我可以在路由文件中获取用户名并将其传递到视图上。我对如何从没有请求的文件获取会话详细信息感到困惑。如:

app.get('/chat', isLoggedIn, function(req, res){ 
     res.render('chat.ejs',{ 
      user : req.user // get the user out of session and pass to template 
     }); 

    }); 
+0

你问的是如何让用户从不是由路由执行的代码? – leetibbett

+0

我在问我如何从socket.js文件和其他文件中的会话中获取当前用户。 – Tom

+0

套接字,在编程层面上,不是'socket.io'相关...我删除了标签。有关更多信息,请参阅[tag:套接字]标记详细信息。 – Myst

GitHub上的passport.socketio项目可能是解决方案。