我是 Express
的新手。由于 Express 4.x
已删除捆绑的中间件。应该需要我想使用的任何中间件。当我在 github 上阅读带有 express-session 和 cookie-session 的 README 时,我觉得很难理解其中的区别。
所以我尝试编写简单的代码来解决这个问题。我为每个中间件运行两次。
var express = require('express')
, cookieParser = require('cookie-parser')
, session = require('cookie-session')
, express_sess = require('express-session')
, app = express();
app.use(cookieParser())
app.use(session({ keys: ['abc'], name: 'user' }));
//app.use(express_sess({ secret: 'abc', key: 'user'}));
app.get('/', function (req, res, next) {
res.end(JSON.stringify(req.cookies));
console.log(req.session)
console.log(req.cookies)
});
app.listen(3000);
对于 cookie-session
,我总是在终端中得到 {}。
对于 express-session
,我得到这样的东西。
req.session: { cookie: {
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true
}
}
req.cookie: {user: 's:aJ97vKA5CCwxqdTj0AV1siRQ.fWusS5+qfCKICtwkfrzcZ/Gq8P0Qdx/kx8mTBhoOhGU'}
这真的让我很困惑。那么如何用基本用法来解释结果呢?他们之间有什么区别?我应该什么时候使用它们?
原文由 Tinple 发布,翻译遵循 CC BY-SA 4.0 许可协议
基本上,
express-session
更抽象,它支持不同的会话存储(如文件、数据库、缓存等)。cookie-session
是一个简单/轻量级的基于 cookie 的会话实现(cookie 是唯一支持的存储引擎:所有会话信息都存储在客户端的 cookie 中)。这种会议可能以其 Rails 实施 而闻名。