cookieparsing器中的秘密集和会话在express.js中存储相同的东西?

Node.js提供的身份validation示例使用以下代码段:

 app.use(express.cookieParser('shhhh, very secret')); app.use(express.session()); 

但是, express.js会话的文档使用以下内容:

 app.use(cookieParser()) app.use(session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})) 

这很混乱。 两个秘密是一样的吗? 如果我将会话存储在数据库中,应该使用哪种方法?

Express 3.5.x版本仍应使用连接一些基于连接模块的库。

CookieParser中间件

 connect() .use(connect.cookieParser('optional secret string')) .use(function(req, res, next){ res.end(JSON.stringify(req.cookies)); }) 

Nex是默认使用内存存储的会话中间件,如果你想扩展你的应用程序,可以使用Redis,Mongo或其他任何数据库来存储内存:

 connect() .use(connect.cookieParser()) .use(connect.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})) 

阅读有关connect的会话中间件的更多信息,有两行可以回答你的问题。 ( http://www.senchalabs.org/connect/session.html

 // backwards compatibility for signed cookies // req.secret is passed from the cookie parser middleware var secret = options.secret || req.secret; // ensure secret is available or bail if (!secret) throw new Error('`secret` option required for sessions'); 

秘密会话cookie用这个秘密签名以防止篡改。 所以基本上这些都是一样的,但是当你添加了会话支持的时候,请去掉cookieParser中的选项,并且只使用会话中间件中的选项设置。

另外请注意Express 4.x版本带来了一些中间件的变化!