express/connect 응용 프로그램에서 서명 된 쿠키를 구문 분석하는 동안 문제가 있습니다.서명 된 쿠키 파싱 연결
io.set('authorization', function (handshakeData, callback) {
if(handshakeData.headers.cookie) {
var signedCookies = cookie.parse(decodeURIComponent(handshakeData.headers.cookie));
handshakeData.cookie = connect.utils.parseSignedCookies(signedCookies, secret);
} else {
return accept('No cookie transmitted', false);
}
callback(null, true); // error first callback style
});
connect.utils.parseSignedCookies
은 빈 객체를 반환합니다. 나는 파싱 함수의 소스를 조사하여 인코딩 된 값의 하위 문자열을 가져온 unsign 메서드를 호출 한 다음 동일한 암호로 다시 서명하려고 시도하고 결과를 비교하여 인코딩 된 동일한 값과 몇 가지 이유로 실패하고 값이 일치하지 않습니다. 나는 왜 내가 옳지 않은지, 왜 그 가치가 다른지, 왜 올바른 세션 ID를 얻을 수 없는지 모릅니다.
내 응용 프로그램 초기화 코드는 다음과 같습니다
app.use(express.cookieParser(secret));
app.use(express.session({
key: 'sessionID',
secret: secret,
maxAge: new Date(Date.now() + 3600000),
store: new RedisStore({
client: redisClient
})
}));
도움과 내가 잘못 여기서 뭘하는지 지적 해주십시오. 고마워요
이 답변 주셔서 감사합니다,이 방법은 그것을 할 수 더 의미하지만 불행히도 그것은 작동하지 않습니다 중 몇 가지 이유. 다음은 서명 된 값과 다시 서명 된 값의 스크린 샷입니다. 여전히 다릅니다 : http://grab.by/qyra 다른 것을 어떻게해야할지 모르겠습니다 ... –
코드에서 쿠키 파서를 어떻게 사용하고 있습니까? ? – hexacyanide
코드는 파싱 부분의 코드와 거의 같습니다. 하지만 중간에 올바르게 추가하면 확실하지 않습니다. 그것은 세션 미들웨어 이전과 라우터 미들웨어 이전에 발생합니다. 나는 집에 도착했을 때 나중에 전체 코드를 게시하려고합니다. 어쩌면 아이디어가있을 것입니다 .. –