【发布时间】:2021-03-22 19:42:52
【问题描述】:
问题
我正在尝试根据类似于this 帖子的快速会话对用户进行身份验证。在 http 请求中,这就是 req.session 返回的内容,我还连接了我的 mongo 存储以保存会话,但它的行为也像套接字会话一样只返回没有会话信息的 cookie。
//user not authenticated
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
passport: {}
}
//user authenticated
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
passport: {
user: {
_json: [Object],
id: '76561198298457222',
}
但是当我尝试使用后引用的护照对象使用套接字 io 进行 socket.request.session 时,不会返回。但我很确定中间件可以正常工作,否则根本就没有会话。
// user not authenticated
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }
}// user should be authenticated
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }
}
设置:
var sessionMiddleware = session({
secret: '<secret>',
name: 'profile_session',
resave: true,
saveUninitialized: true,
store: new MongoStore({ mongooseConnection: mongoose.connection })
})
app.use(sessionMiddleware);
io.use(function (socket, next) {
// Wrap the express middleware
sessionMiddleware(socket.request, {}, next);
})
io.on('connection', (socket) => {
console.log('a user connected id:', socket.id);
console.log(socket.request.session)
});
【问题讨论】:
-
试试
socket.handshake.session -
不,甚至没有安装会话
标签: node.js mongodb express session-cookies