express-session 和 cookie-session 有什么区别?

新手上路,请多包涵

我是 Express 的新手。由于 Express 4.x 已删除捆绑的中间件。应该需要我想使用的任何中间件。当我在 github 上阅读带有 express-sessioncookie-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 许可协议

阅读 621
1 个回答

基本上, express-session 更抽象,它支持不同的会话存储(如文件、数据库、缓存等)。

cookie-session 是一个简单/轻量级的基于 cookie 的会话实现(cookie 是唯一支持的存储引擎:所有会话信息都存储在客户端的 cookie 中)。这种会议可能以其 Rails 实施 而闻名。

原文由 bredikhin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题