![](/img/trans.png)
[英]403 forbidden - socket.io connection across subdomains with Passport.io + express + socket.io
[英]Socket.io and Passport - Get passport userID on socket connection?
本質上,我想獲取連接到socket.io的用戶的UserID。
如果用戶未登錄,我將忽略套接字連接請求-否則,我會將Passport UserID和套接字連接ID存儲在redis中。
那么,我的問題是:如何從套接字對象獲取Passport用戶?
這里很好地解釋了如何使用Socket.IO實現身份驗證,您讀過嗎?
鑒於解決此問題的現有庫不適用於當前版本的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');
}
})
如果發現用戶已登錄,則將其用戶ID和socket.io連接信息存儲在Redis中。 當我需要向用戶推送通知時,我將查詢redis的用戶ID並在找到的套接字ID上發出。 當用戶斷開連接時,我將刪除其用戶ID的條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.