node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录
2014-08-14 17:31
351 查看
关于session 和cookie 我搞了2-3天, 发现这个玩意也挺麻烦的. 很多教程都是把这种会话保存在nosql里面,比如mongo,或者redis等等.但是我还是想直接保存在计算机的内存中,比较符合传统的方式.网上也有很多这方面的文章,但基本上都是你抄我的,我抄你的,而且express有很多这种session/cookie的中间件,总是让人弄迷糊.很多文章都是点到为止,完全要靠自己慢慢去试,去看文档,去摸索.
我是基于connect这个中间件实现的.这个middleware 功能非常强大
有兴趣的同学可以参考: http://blog.fens.me/nodejs-connect/
安装在这里就不说了. 下面我们就来实现一下,希望对大家有用
导入模块在app.js里
在路由分发语句前加入。
先说session ,设置session 的KV
这样我们就设置了一个名为sessname的session变量,值就是iam a sesion,这个session的会话时长是20秒。ubuntu上打字还是不太灵活
获取session
删除session
判断session是否存在
以上session操作足够完成常用的逻辑啦
下面说cookie,我们也经常用到的。
设置cookie
获取cookies的值
删除cookie,网上很多,但是好像都没用,有的是把过期时间设置为0,我试了,cookie的值没有了,但是cookie还在,用chrome查看还有的。
这样删除就没问题了。
判断cookie是否存在,比如做登录和权限验证什么的。cookie失效后,变成了undefined,所以我们这样判断
我是基于connect这个中间件实现的.这个middleware 功能非常强大
有兴趣的同学可以参考: http://blog.fens.me/nodejs-connect/
安装在这里就不说了. 下面我们就来实现一下,希望对大家有用
导入模块在app.js里
var connect = require('connect');
在路由分发语句前加入。
app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(connect.session({ secret: 'lgphp', key: 'lgphp' ,cookie: { maxAge: 20000}})); //session 时长为20秒,这个是以毫秒为单位,这样我们就建立一个session的会话,这是一个全局的设置 routes(app);
先说session ,设置session 的KV
req.session.sessname = 'i am a sesion';
这样我们就设置了一个名为sessname的session变量,值就是iam a sesion,这个session的会话时长是20秒。ubuntu上打字还是不太灵活
获取session
res.send('session:' + req.session.sessname)
删除session
req.session.destroy();
判断session是否存在
if (req.session){ //判断session是否被销毁
以上session操作足够完成常用的逻辑啦
下面说cookie,我们也经常用到的。
设置cookie
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'); }
相关文章推荐
- node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录 - lgphp
- node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录
- EXPRESS 4.x 以上使用session和cookie 的记录
- express如何使用session与cookie的方法
- 【JavaWeb-7】Cookie记住用户名、历史浏览记录与Session的自动系列化、购物车案例、验证码使用
- nodejs 的 express-session 模块之 cookie.secure 选项使用注意事项
- express中使用express-session记录登陆状态
- express中间件之cookie-session的使用
- asp.net中cookie和session的区别和相关使用
- 如何在AjaxPro.net的AjaxMethod中使用session和cookie
- SESSION和COOKIE的使用
- 使用HttpClient模拟网站登陆sina邮箱(保持远程服务器session和cookie)
- PHP - Manual手册 - CXLIX. Session 会话处理函数 - session.use_only_cookies指定是否在客户端仅仅使用 cookie 来存放会话 ID
- 如何使用单元测试 测试WEB组件方法中的含有Session、Cookie等HttpContext功能调用的方法?[转载]
- PHP session和cookie的操作及使用
- [Java] 使用cookie保持Session (Axis2 和 WSIT)
- 在WebService中使用Session或Cookie---WebService安全策略
- 如何在AjaxPro.net的AjaxMethod中使用session和cookie
- Session实现购物,访问计数器,cookie使用!
- 抛开Cookie使用SESSION-PHP中SESSION不能跨页传递问题的解决办法(转载)