2015-11-30 50 views
1

我正在構建一個列表應用程序,其中幾個用戶可以登錄到同一個列表並實時查看項目更新 - Google文檔樣式。我使用NodeJS,Express,Socket.io進行即時更新,並使用client-sessions NodeJS模塊來存儲cookie以允許用戶保持登錄狀態。Socket.io如何檢查客戶端的cookie數據?

我可以通過將Jade加載到頁面上的正確項目通過在req.session.user下創建一個包含用戶詳細信息的cookie,在請求客戶端填充與cookie關聯的項目。但是,這隻有當我有一個req來獲得會話,如在app.get('/', function(req, res){});

然而,當我想通過即時串流的socket.io編輯,我怎麼能確保編輯的項目被鏈接到正確的名單?有什麼方法可以確定套接字客戶端在服務器上有哪些cookie?

我不想簡單地存儲與客戶端的瀏覽器ID的變量,因爲這將是那麼脆弱,而不會利用內置的加密客戶端的會話的的。

+1

審查http://socket.io/docs/server-api/ client.request將幫助您找回它們。 – Gary

+0

@加里令人驚歎!使用'client.request.headers.cookie'確實允許我檢查cookie。現在你有什麼想法如何使用'client-sessions'祕密解密它了嗎? – Aron

+0

如果您查看客戶端會話(client-sessions.js)的代碼,則會導出解碼函數。我會從那裏開始。它沒有記錄,所以你可能將不得不做一些探索...... – Gary

回答

1

評論socket.io/docs/server-api

client.request將幫助您找回它們。

如果你看一下客戶端的會話(客戶sessions.js)的代碼,它導出解碼功能。 session.decode({'cookieName':'name'},cookie_content);