第10天 cookie与session— session插件开发
上一节的分析,我们了解了cookie和session的关系。接下来,将实际的开发session插件,以下是session插件源代码。
session插件开发
上一节的分析,我们了解了cookie和session的关系。接下来,将实际的开发session插件,以下是session插件源代码。
var sid = Date.now() , cache = {} module.exports = function(req,res,next){ Object.defineProperty(req,"session",{ get: function(){ return cache[this.sessionId]; }, set: function(value){ cache[this.sessionId] = value; } }) if(!(req.headers.cookie && (req.sessionId = parse(req.headers.cookie).sessionId))){ req.sessionId = sid += 1; res.setHeader("Set-Cookie",["sessionId="+req.sessionId]) } next(); } // 把cookie字符串转换为json对象 function parse(str){ var arr = str.split(";") ,obj = {} arr.forEach(function(field){ var o = field.split("="); obj[o[0].trim()] = o[1]; }) return obj; }
sid
是一个生成ID的时间阀,每次需要生成性的sessionId时候会 +1 , cache
是保存session id对应的数据,这个数据用户可通过req.session = xxx 自定义,也可通过req.session进行访问。parse
方法是用来把cookie的字符串形式转换为json对象。
通过 if(!(req.headers.cookie && (req.sessionId = parse(req.headers.cookie).sessionId)))
判断req.sessionId是否存在,如果不存在那么就创建一个并把sessionId信息写入到响应头发送给客户端。
最后,还要在index.js
文件中加入:
exports.session = require("./lib/session");
有了session插件后,明天开发博客系统就有了保证,因为登录状态需要记录在session里。下一节,我们用session插件,做一个数字累加的例子。
很赞哦! ( 0
)
相关文章
- 视频:Windows 安装FTP服务 (基于Windows2008 IIS配置FTP站点 )
- 屌丝为什么找不到女朋友
- nodejs 利用GraphicsMagick和gm组件创建图片缩略图
- 马云终于离职了,最后他说了什么?
- jquery 对 Json 的各种遍历
- 麦本本,是什么本本?
- nodeJs基础教程系列(5)——异步与同步
- 怎样成长为一个优秀的 Web 前端开发工程师?
- 我用的一些Node.js开发工具、开发包、框架等总结
- nodeJs基础教程系列(2)——版本管理工具
- [转]有关网页渲染,每个前端开发者都该知道的那点事
- node.js 操作MongoDB 根据条件 随机取记录,怎么做?