2013-07-31 25 views
3

是否有框架來支持完全客戶端管理的會話?換句話說,並不是只在cookie中存儲簽名的pid(如Express所做的那樣),而是存儲所有上下文......以便您可以跨羣集管理狀態,而無需持久保存。NodeJS - 無狀態會話的框架?

+2

會話包含意味着僅用於服務器的私人用戶信息。將整個會話發回給用戶並不好。它可以被客戶篡改。完全由客戶端管理的會話是一個糟糕的主意。 – user568109

+1

@ user568109,這是一種常見模式,可以安全地完成。 http://www.cse.msu.edu/~alexliu/publications/Cookie/cookie.pdf –

+1

安全cookie協議是關於從第三方保護瀏覽器和服務器之間的連接。您提到的常見模式是僅限HTTP的cookie,它僅由瀏覽器管理,因此用戶無法修改它。 – user568109

回答

1

沒有支持這個快遞中間件:

https://github.com/expressjs/cookie-session

cookieSession()

提供基於Cookie的會話,並填充req.session。該中間件包含以下選項:

  • 名字 - cookie的名稱默認爲「會議
  • 鍵 - 密鑰的列表,以防止篡改
  • 祕密 - 作爲單一關鍵如果未指定
  • 選項 - 其他選項,例如安全,僅Http,MAXAGE等

中間件:

var cookieSession = require('cookie-session') 
... 
app.use(cookieSession({ 
    name: "my_session_cookie", 
    secret: "dont_tell_anybody_the_secret_and_change_it_often", 
    options: { ... } 
)); 

app.use((req, res, next) => { 
    // set options on req.session before your response goes out 
    req.session.viewCount = (req.session.viewCount || 0) + 1; 
    res.end(`You viewed the page ${req.session.viewCount} times.`); 
}); 

要清除cookie就完全響應之前分配給空會話:

req.session = null