关于session 和cookie 我搞了2-3天, 发现这个玩意也挺麻烦的. 不少教程都是把这种会话保存在nosql里面,好比mongo,或者redis等等.可是我仍是想直接保存在计算机的内存中,比较符合传统的方式.网上也有不少这方面的文章,但基本上都是你抄个人,我抄你的,并且express有不少这种session/cookie的中间件,老是让人弄迷糊.不少文章都是点到为止,彻底要靠本身慢慢去试,去看文档,去摸索.php
我是基于connect这个中间件实现的.这个middleware 功能很是强大html
有兴趣的同窗能够参考: http://blog.fens.me/nodejs-connect/ node
安装在这里就不说了. 下面咱们就来实现一下,但愿对你们有用redis
导入模块在app.js里sql
1 var connect = require('connect');
在路由分发语句前加入。chrome
1 app.use(bodyParser.json()); 2 app.use(bodyParser.urlencoded()); 3 app.use(cookieParser()); 4 app.use(connect.session({ secret: 'lgphp', key: 'lgphp' ,cookie: { maxAge: 20000}})); //session 时长为20秒,这个是以毫秒为单位,这样咱们就创建一个session的会话,这是一个全局的设置 5 routes(app);
先说session ,设置session 的KVexpress
req.session.sessname = 'i am a sesion';
这样咱们就设置了一个名为sessname的session变量,值就是iam a sesion,这个session的会话时长是20秒。ubuntu上打字仍是不太灵活json
获取sessionubuntu
res.send('session:' + req.session.sessname)
删除session cookie
req.session.destroy();
判断session是否存在
if (req.session){ //判断session是否被销毁
以上session操做足够完成经常使用的逻辑啦
下面说cookie,咱们也常常用到的。
设置cookie
1 res.cookie('cookiename','i am a cookie',{ maxAge: 20000,httpOnly:true, path:'/'});//cooike 时长 30 sec
获取cookies的值
var c = req.cookies.cookiename //这是个字典对象,你能够用括号的方式得到
删除cookie,网上不少,可是好像都没用,有的是把过时时间设置为0,我试了,cookie的值没有了,可是cookie还在,用chrome查看还有的。
res.cookie('cookiename','null',{maxAge:0});
这样删除就没问题了。
判断cookie是否存在,好比作登陆和权限验证什么的。cookie失效后,变成了undefined,因此咱们这样判断
if ('undefined' === (typeof req.cookies.cookiename)){ res.send('deleted cookie'); }
原文:http://www.cnblogs.com/lgphp/p/3913077.html?utm_source=tuicool&utm_medium=referral