2013-07-31 23 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