2012-11-26 43 views
3

我正在使用express和socket.io。我想從socket.io中訪問一些req.session變量。我在socket.io and session上閱讀這篇文章,對於如何獲得req.session變量,我仍然非常困惑。如何從socket.io中訪問req.session變量?

+1

請注意,您提到的答案是舊版本的socket.io。也許看看[這個答案](http://stackoverflow.com/questions/6397574/how-to-access-session-in-express-outside-of-the-req?rq=1)。不能說,如果它仍然適用於個人,因爲我不使用socket.io。您還可以閱讀[socket.io wiki](https://github.com/LearnBoost/socket.io/wiki/Authorizing)上的授權。 – numbers1311407

+0

謝謝@ numbers1311407 – ThomasReggi

回答

7

完成此操作的一種方法是使用來自套接字內部的會話存儲 - 這將擁有所有會話變量。這就是我如何進行授權(將cookie ID與數據庫中的會話ID進行比較)。

io.set('authorization', function (data, accept) { 

    if (data.headers.cookie) { 

     data.cookie = utils.parseCookie(data.headers.cookie); 
     data.sessionID = data.cookie['connect.sid'].split('.')[0].substring(2); 

     sessionStore.get(data.sessionID, function (err, session) { 
       // now you have all session variables 
     });      
    } 
});