如何在express,couchDB和node.js中使用会话

所以我基本上想使用会话来存储用户名,并检查用户是否login。 如果没有,页面将redirect到login页面。

我正在使用Node.js,express和couchDB。

以下是我如何设置我的会议到目前为止

var MemoryStore = require('connect').session.MemoryStore; app.use(express.cookieParser()); app.use(express.session({ secret: "keyboard cat", store: new MemoryStore({ reapInterval: 60000 * 10 }) })); 

要存储会话中的某些东西,我使用下面的代码吧?

 req.session = {user:name); 

所以会话variables似乎在我的login页面上工作。 我成功地将用户名存储到会话中但是,当我尝试访问另一个页面上的会话variables时,它给了我错误

 Cannot read property 'user' of undefined 

我所做的是:

 if (req.session.user){ 

为什么这个错误发生? 是不是全球应用程序的全球会议? 还是我在这里完全错过了一些东西。

提前致谢!

如果您在设置cookie和会话处理的行之前执行app.use(app.router) ,请尝试将它移到后面。 这为我解决了同样的问题。

我试图解决他最后几个小时完全相同的问题。

尝试像这样初始化您的服务器:

 var app = express.createServer( express.cookieParser(), express.session({ secret: "crazysecretstuff"}) ); 

这应该工作。

我有同样的问题得到未定义的会话variables,我知道设置好。

在我的情况下,原来是由交叉来源请求引起的,我忘记了请求中的withCredentials头。

所以例如在我的客户端Angular应用程序中,我需要这样做:

 var config = { withCredentials: true }; return $http.get(appConfig.apiUrl + '/orders', config); 

并在expression这个:

 res.header('Access-Control-Allow-Credentials', true); 

configuration中的sessionSecret (config.json?)应该是非空的:

sessionSecret: "something other than an empty string",