2014-01-13 57 views
5

如何在客戶端上找到當前會話ID?在Meteor.js中查找當前會話ID

我能夠得到看起來像最後一個會話ID,而不是當前會話ID。

console.log(Meteor.default_connection._lastSessionId) 

回答

7

這種措辭是有點混亂,但_lastSessionId是當前的會話ID。

它只被稱爲這是因爲如果客戶端斷開連接並試圖重新連接它想要重新建立與上次會話ID的會話。

客戶端將與這樣的消息重新連接:

{"msg": "connect ", "session": "ERoZSR3R3f8zBQ6Ry", "version": "pre1","support":["pre1"]} 

session使用lastSessionId值。然後這用於重新建立以前的連接。

這是在重新連接上分配新會話ID的唯一情況。這或會話已經過期。

如果服務器重新啓動,它的緩存刷新並且不再識別該會話,並且將分配新的會話ID。

+1

(通過熱代碼重裝)重新啓動服務器之後,將客戶端重新連接與不同的'_lastSessionId'而不是使用相同的一個作爲服務器重新啓動之前。 '_lastSessionId'是否應該和上面提到的一樣? – Nyxynyx

+0

我更清晰地更新了答案 – Akshat

-1

默認情況下,Meteor登錄令牌存儲在本地存儲(不是cookie)中。

在客戶端,您可以訪問

token = Meteor._localStorage.getItem('Meteor.loginToken') 

在服務器上,一旦令牌被接收,使用賬戶的API使用

Accounts._hashLoginToken(res.req.body.token) 

然後湊,你可以驗證對用戶收集哈希值。爲services.resume.loginTokens.hashedToken字段

這個黑客可以用來建立流星 - 快遞集成

Meteor Login Token