Express中将session存入mongodb的注意事项

自己在参照《Node.js开发指南》做session的过程中遇到了一些问题,自己通过查询各方资料还是把搞出来了,于是总结出下面这篇注意事项。

关于Express中的session

Express中可以通过增加Connect的session中间件来开启对Session支持。其中至少包括以下几个步骤:

1、首先需要引入connect-mongo模块

var MongoStore = require('connect-mongo')(express);

(注:可能是版本的差异,在《Node.js开发指南》一书中使用的是var MongoStore = require('connect-mongo');,在我电脑是这将会导致Node报Cannot read property 'Store' of undefined

2、使用cookie处理中间件

app.use(express.cookieParser());

3、使用Connect的session中间件

app.use(express.session({
    secret: settings.cookieSecret,//设置加密字符串
    store: new MongoStore({
        db:'myapp' //将session存入myapp数据库中
    })
}));

4、移动路由处理中间件的位置

app.use(app.router);

上面这段代码在Express创建项目时就会生成,主要用于显示地去处理路由,如果删去上述代码,Express也将会隐式地去处理路由。如果你已经显示的使用路由处理中间件你需要将上述代码的位置放在session处理中间件之后。否则在后续通过req.session去设置/读取session过程中你将会得到reg.session是undefined的提示/错误报告。

 

现在req.session等属性就可以被所有路由及下级中间件所访问,req.session的属性会伴随着每一次响应发送给客户端。

 

posted on 2013-12-27 15:02  醉池明月  阅读(1956)  评论(0)    收藏  举报

导航