我是Express的新手。因为Express 4.x已经移除了捆绑的中间件。我想使用的任何中间件都应该是必需的。当我在github上阅读express-session和cookie-session的自述文件时,我觉得很难理解其中的区别。
所以我试着写一些简单的代码来解决这个问题。我为每个中间件运行两次。
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'}这真的让我很困惑。那么如何解释基本用法的结果呢?它们之间的区别是什么?我应该什么时候使用它们?
发布于 2014-05-09 22:18:44
基本上,express-session更加抽象,它支持不同的会话存储(如文件、数据库、缓存等)。
而cookie-session是一个基于cookie的简单/轻量级的会话实现(cookie是唯一支持的存储引擎:所有的会话信息都存储在客户端的cookie中)。这种类型的会话可能最出名的是它的Rails implementation。
发布于 2017-11-13 16:56:26
这两者之间的基本区别与会话数据的存储方式和位置有关。Express基本上用于轻量级会话应用程序,其中会话数据存储在cookie中但在客户端浏览器中,而 Session仅在客户端的cookie中存储会话标识符,而将会话数据完全存储在服务器上。在后端不使用数据库的应用程序中,Cookie会话非常有用。但是,会话数据不能超过cookie大小。在使用数据库的情况下,它就像一个缓存,用来阻止频繁的数据库查找,这是非常昂贵的。
发布于 2018-04-18 09:02:06
express-session将会话标识符存储在cookie中,而实际的会话数据驻留在后端会话存储中,如connect-redis,其中as cookie-session允许您将会话数据存储在cookie中(客户端)。
来自cookie-session的文档:
使用cookies可以通过两种主要方式存储用户会话:在服务器上或在客户端上。此模块将客户端上的会话数据存储在cookie中,而像express-session这样的模块仅将客户端上的会话标识符存储在cookie中,并将会话数据存储在服务器上,通常存储在数据库中。
使用cookie-session的主要优点是,当您拥有集群node.js应用程序时,您不必依赖于在分支进程之间共享会话数据。
https://stackoverflow.com/questions/23566555
复制相似问题