如何在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",