簡體   English   中英

Socket.io和Passport-在套接字連接上獲取護照userID?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM