socket.io에서 세션 변수에 액세스하는 악명 높은 문제를 해결하려고합니다. 기본적으로 주제와 관련하여 Google의 모든 링크를 읽었으며 여전히 고민 중입니다.Express 쿠키 세션 키가 데이터 헤더에 표시되지 않음
내 모든 라우팅 후 나는이 있습니다
io.set('authorization', function(data,accept)
{
data.cookie = cookie.parse(data.headers.cookie);
---> console.log(data.cookie);
data.sessionID = connect.utils.parseSignedCookie(data.cookie['express.sid'].split('.')[0].substring(2), conf.sessionSecret);
sessionStore.get(data.sessionID, function (err, session)
{
console.log(session);
});
});
불행하게도, 나는 반환이에 화살표를 그린 CONSOLE.LOG :
{ 'connect.sid': 's:3pIi31DPthO8KVOjqzYpeL75.nHvKOpMZsUsyto7CtBJgcJZIiBSN+IC2/aD0GcfYftU' }
그래서 물론, 나는 오류에 대한 얻을 express.sid가 정의되지 않았습니다. express.sid를 connect.sid로 변경하면 세션 변수가 정의되지 않습니다.
나는이 문제를 해결하기 위해 정말로 고심하고있다. 나는 몇 시간 동안 그것을 해왔다. 어떤 도움이 필요합니까?
편집 : 내 클라이언트가 내 서버의 포트 포워딩, 외부 IP 버전에 연결되었다
- : 내 해결 된 문제를 요약합니다. 쿠키 데이터를 전송하지 않았습니다.
- . 세션 ID를 찾을 때 .split ('.') [0] .substring (2)가 절대적으로 필요합니다.
- io.set ('인증, 함수 (핸드 셰이크, 콜백) socket.io 연결 순서 "콜백 (NULL, TRUE)"당신은 아주 가까이있어 일반적으로
아, 예,'headers.cookie' 부분을 제거하십시오. 죄송합니다 실수도, 예제를 편집합니다. – hexacyanide
handshake.signedCookies가 비어 있습니다. 왜 그렇게 될지 아십니까? – Harangue
더 많은 코드를 보여줄 수 있습니까? – hexacyanide