【发布时间】:2013-09-23 19:11:55
【问题描述】:
我在尝试在 express/connect 应用程序中解析回签名 cookie 时遇到问题。
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 会返回空对象。我查看了 parse 函数的源代码,发现它调用了 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
})
}));
请帮助并指出我在这里做错了什么。谢谢
【问题讨论】:
标签: javascript node.js express socket.io connect