2017-06-12 32 views
0

我正在使用客戶端會話與節點和快遞,並且我無法註銷用戶。節點會話未在生產中清除

我註銷功能做了

req.session.user=null 

那就是:

userRouter.get('/logout', function(req, res, next) { 
    req.session.user = null 
res.sendStatus(200) 
}); 

(我也嘗試刪除req.user,req.user.destroy(),和其他變種)。

在dev env,在本地主機上,它工作的很棒。 在生產環境中,註銷被調用,但下一次用戶刷新瀏覽器頁面時,用戶仍然登錄。

開發和生產中的代碼相同。

有人有什麼想法嗎? 感謝....

回答

0

this blog postclient-sessions,您可以使用此:

userRouter.get('/logout', function(req, res, next) { 
    req.session.reset(); 
    res.sendStatus(200); 
}); 
+0

謝謝@robertklep,我曾試過,但沒有運氣。有趣的是,代碼在localhost中像一個迷人的東西。另外,在服務器上,我可以看到會話,我可以將其設置爲空,但當用戶刷新時,它就像仍然存在... – Fab

+0

您應該查看瀏覽器中的請求/響應週期dev工具來查看重置cookie時會發生什麼。另外,您的生產環境是否只包含一臺服務器,還是有更多? – robertklep

+0

只有一臺服務器(我的意思是,一臺服務於客戶端,另一臺服務於API) – Fab

0

所以最終的問題是,我沒有

headers: { 
      'Accept': 'application/json', 
     }, 
呼叫

來自客戶端。我有點困惑,似乎服務器會設置會話(通過nginx)只有當客戶端有這個頭,而在本地主機它沒有這個設置會話正確。

+0

你是否緩存NGINX中的代理響應? – robertklep

+0

真正的答案是,我不知道...我有這個指令proxy_cache_bypass $ http_upgrade; – Fab

+0

我不認爲NGINX會自動緩存代理響應,所以除非你有明確的配置,否則它可能不會被緩存。 – robertklep