2012-11-26 3 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

이 작업을 수행하는 한 가지 방법은 소켓 내부에서 세션 저장소를 사용하는 것입니다. 세션 저장소는 모든 세션 변수를 갖습니다. 이 방법으로 인증을 수행합니다 (쿠키 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 
     });      
    } 
}); 
관련 문제