2013-05-23 11 views
0

내 웹 사이트에서 사용자는 데이터베이스 계정으로 로그인해야합니다. 내 질문은 어떻게 인증을 socket.io 경우에만 데이터베이스 로그인 패스 및 쿠키에 내 변수를 만드는 것입니다?Node.js + socket.io + mongo with

여기서부터 인증 기능이있는 익스프레스 socket.io Auth은 sessionID와 함께 작동하며 어쩌면 사용자가 데이터베이스에 로그인 할 때 sessionID를 줄 수 없습니까?

답변

0

사용 authorization function :

io.set('authorization', function (handshakeData, callback) { 
    // findDatabyip is an async example function 
    findDatabyIP(handshakeData.address.address, function (err, data) { 
    if (err) return callback(err); 

    if (data.authorized) { 
     handshakeData.foo = 'bar'; 
     for(var prop in data) handshakeData[prop] = data[prop]; 
     callback(null, true); 
    } else { 
     callback(null, false); 
    } 
    }) 
}); 
  • 데이터베이스 조회와 findDatabyIP를 교체합니다.
  • handshakeData에 설정 한 모든 속성은 socket.handshake.sessionID를 통해 "연결"처리기에서 사용할 수 있어야합니다.
  • 오류 코드 (해당되는 경우)와 연결이 허가되면 true로, 그렇지 않으면 false로 전화를 거는 콜백입니다.
  • 세션의 쿠키를 구문 분석하고 읽는 것이 어려울 수 있습니다. This discussion (especially jugglinmike's post) 도움이 될 수 있습니다.