express是基于node.js的一个web框架,但是到了4.xx版本之后,session管理和cookies等许多模块都不再直接包含在express中,而是需要单独下载添加。
由于之前没有注意看人家的更新日志等,所以纠结了一两天,今晚终于搞掂了,传言把session存到redis中,立马觉得高达上了。。。记录一下,所需的代码如下,
var express = require(‘express‘); var session = require(‘express-session‘); //如果要使用session,需要单独包含这个模块 var cookieParser = require(‘cookie-parser‘); //如果要使用cookie,需要显式包含这个模块 var RedisStore = require(‘connect-redis‘)(session); var app = express(); // 设置 Cookie app.use(cookieParser(‘xiaocc_‘)); // 设置 Session app.use(session({ store: new RedisStore({ host: "127.0.0.1", port: 6379, db: "test_session" }), resave:false, saveUninitialized:false, secret: ‘keyboard cat‘ })) app.get("/", function(req, res) { //console.log(session); //装了n多次,没有把调试工具下载弄好,实在悲哀, 只能每次都log,求走过路过的大神指导~ // var session = req.session; session.count = session.count || 0; var n = session.count++; res.send(‘hello, session id:‘ + session.id + ‘ count:‘ + n); }); app.listen(3000); console.log(‘Web server has started on http://127.0.0.1:3000/‘);
上面的例子,在我的项目文件中包含的模块如下,如果没有导入其中的包,需要手工下载导入:
1 .body-parser
2 .connect-redis
3.cookie-parser
4.debug
5.express
6. express-session
7. jade (这个看当前使用的模板而定)
8.morgan
9.redis
10.redis-server
11.static-favicon
我正在使用的express版本为4.2.0
如果是4.**版本以前,没有尝试过。有问题再解决了~(如果只是为了解决问题,那到这里,就可以不往下看了,以下注释一些闲聊的东西。~~~)
建议:如果遗忘了cookies和session的原理和作用,最好先补一下相关网络知识。
ps:这个场景有助于联想和记忆:
一个茶馆,3中类型的顾客:分别为甲乙丙3类。茶馆搞活动:喝5杯龙井送一杯茅尖
甲类:每次去这个茶馆,和以往是否去过这个茶馆没有任何关联,当然,顾客也比较难享受到这个优惠活动。(http协议连接的无状态)
也可能:
甲每次去到,无论是谁,牛逼的店员立马能记着该顾客的历史消费记录,也可以比较轻松享受到这个优惠活动。(站在http协议的上面,抛卻http的具体实现,貌似有状态。对的,看起来是店员牛逼,可能是人家在背后早已经根据每个顾客的体貌特征做了记录,别人表现的牛逼,我们无法感受别人在我们看不到的地方做了多少功课(写给我自己看的这句)
乙类:
乙在第一次去喝茶的时候,店员给了他一张积分卡,该积分卡由顾客保管,以后,顾客每次消费,都会在卡上做记录。(cookie)
丙类:
丙在第一次去喝茶的时候,店员会给他一张磁卡,该磁卡有顾客记录,但是以后顾客的每次消费记录存在茶馆里。再想想,除非是顾客请求销卡,否则茶馆估计不会轻易删除顾客消费记录的,另外一种情况,就是某顾客已经有好长一段时间没有来茶馆喝茶了,,,好吧,茶馆只能当这个人不复存在咯~(session,的各种)
最后,十分感谢下面链接的博文,为我解决这个问题提供了指导:
http://blog.csdn.net/liyi109030/article/details/35271389
session和cookies的介绍,参考了以下链接的文章,对此,表示十分感谢:
http://www.2cto.com/kf/201206/135471.html
扯得有点跑题,有点散乱,仅此记录,以上~
xiaocc
express 4.2.0 使用session和cookies