Node.js 句柄socket.request.session.passport未定义
我正在编写一个node express应用程序,它通过socketio在用户之间提供一些交互。 有一个登录页面,我正在使用passport来处理会话。 我正在使用以下命令将passport会话导入socket.io:Node.js 句柄socket.request.session.passport未定义,node.js,socket.io,passport.js,Node.js,Socket.io,Passport.js,我正在编写一个node express应用程序,它通过socketio在用户之间提供一些交互。 有一个登录页面,我正在使用passport来处理会话。 我正在使用以下命令将passport会话导入socket.io: const io=require('socket.io')(https) io.use((socket,next)=>sessionware(socket.request,socket.request.res,bext) 其中,sessionware定义为: var sessio
const io=require('socket.io')(https)
io.use((socket,next)=>sessionware(socket.request,socket.request.res,bext)
其中,sessionware
定义为:
var sessionware=session({
genid:(请求)=>{
返回日期。现在()+“\uuid”()
},
存储:新文件存储(),
秘密:“不管怎样”,
resave:false,
saveUninitialized:true,
名称:“mis_id”,
})
然后在onConnection
函数中,当应用程序获取套接字连接(io.sockets.on('connection',onConnection)
)时调用该函数,我访问socket.request.session.passport.user
以获取连接客户端的用户名。
该解决方案是可行的,但由于我仍在调试应用程序,我经常在本地环境中重新启动服务器,并且时不时地socket.request.session.passport.user
返回未定义的,因此应用程序崩溃。
我真的不知道如何准确地重现这个bug,但同时我想知道:
问题
是否有任何方法可以通过以下方式处理此错误:
函数连接(套接字){
if(socket.request.session.passport.user==“未定义”){
//将客户端路由到登录页。。。?
}
}
如果你需要我的代码结构的具体细节,请告诉我…我只是想强调一下这个问题。我很乐意编辑我的帖子。
谢谢