本质上我想获得连接到socket.io的用户的用户ID。Socket.io和Passport - 在套接字连接上获取护照用户ID?
如果用户没有登录,我会忽略套接字连接请求 - 否则我会将Passport UserID和套接字连接ID存储在redis中。
我的问题,然后:如何从套接字对象获得Passport用户?
本质上我想获得连接到socket.io的用户的用户ID。Socket.io和Passport - 在套接字连接上获取护照用户ID?
如果用户没有登录,我会忽略套接字连接请求 - 否则我会将Passport UserID和套接字连接ID存储在redis中。
我的问题,然后:如何从套接字对象获得Passport用户?
既然是解决这个问题不Socket.io当前版本的工作中存在的库,我已经决定去与以下几点:
我用MongoStore作为我的会话存储:
var sid = cookie.parse(socket.handshake.headers.cookie)['connect.sid'];
sessionStore.get(sid.split('.')[0].split(':')[1], function (err, session) {
if (session.passport.user) {
console.log('io found user logged in');
} else {
console.log('io found no user');
}
})
如果我发现用户已经登录,我会在Redis中存储他们的用户ID和socket.io连接信息。当我需要将通知推送给用户时,我会向redis查询他们的用户ID并发出我找到的套接字ID。当用户断开连接时,我删除其用户标识的条目。
Here如何用Socket.IO实现身份验证的很好的解释,你读过吗?