1
我試圖解決在socket.io內訪問會話變量臭名昭着的問題。我已經閱讀了Google上關於該主題的所有鏈接,而且我仍在掙扎。快速cookieSession鍵不顯示在數據頭
我所有的路由後,我有這樣的:
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時,我的會話變量未定義。
我真的很努力地解決這個問題 - 我已經在它幾個小時。任何幫助?
編輯: 總結我解決的問題:
- 在app.config中,我使用的,而不是會議cookieSession
- 我的當事人被連接到我的服務器的端口轉發,外部IP版本。這不包含cookie數據。
- .split('。')[0] .substring(2)查找會話ID時絕對必要
- 在io.set('authorization,function(handshake,callback)... must call 「回調(NULL,TRUE)」,以使socket.io連接正常進行
啊是的,刪除'headers.cookie'部分。對不起,我們也會編輯這個例子。 – hexacyanide
handshake.signedCookies爲空。你知道這是爲什麼嗎? – Harangue
你能展示更多的代碼嗎? – hexacyanide