2016-11-25 85 views
0

我使用快遞與快遞會話封裝,可以成功地保持像這樣一個會話變量,節點會自動創建會話變量嗎?

router.get('/test', function(req, res, next){ 
    req.session.test = 'awesome'; 
    res.send('awesome') 
}) 

,當我使用下面的代碼,我會得到期望的結果

router.get('/pest', function(req, res, next){ 

    res.send(req.session.test) 
}) 

我沒有問題,但我無法理解,Node是否會自動創建與其他變量的會話?例如:

router.get('/test', function(req, res, next){ 
    router.test = 'test'; 
    res.send('test') 
}) 

然後將

router.get('/lest', function(req, res, next){ 
    res.send(router.test) 
}) 

使完全相同的結果。看起來很奇怪,節點會在一段時間後自動保持這樣的變量。

回答

1

它不是一個會話變量。

你有一個單一的路由器對象。

對其的修改將持續請求,而不僅僅是來自具有給定會話cookie的瀏覽器的請求。

+0

所以它需要一個狀態機來處理所有獨特的IP? –

+0

好的,澄清一下,如果在新澤西的計算機上將A路由器對象更改爲計算機B上的相同路由器對象,將會導致計算機B中的同一路由器對象發生更改? –

+0

我不認爲你需要一個狀態機。你需要一個會話。您不應鏈接IP地址會話(因爲多人可以共享IP地址),請改用會話cookie。是的,路由器對象存在於整個服務器,而不是會話。 – Quentin