nodejs 的 session 简单使用


Posted in NodeJs onJune 06, 2016

session的本质使用cookie来实现。

原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份。把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了。(在PHP,ASP或者其他服务端语言中都自动帮你实现了)

实现cookie

需要为每一个用户设置一个可以标示用户身份的cookie。可以使用如下规则

注册邮箱MD5值+密码MD5值+随机码MD5值。(仅仅举例,这可能并不是一个好的方案)

服务端代码片段:

res.setHeader("Set-Cookie", ["sid="+newUser.toCookie()+";path=/;domain="+config.domain+";expires="+new Date("2030") ]);

cookie

sid=275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee

使用 cookie 获取用户身份,设置session

把所有非静态资源的请求都定向到这里处理。获取cookie,把cookie拆分并在数据库查找符合条件的用户。最后使用 next 跳转到下一个请求逻辑。

下一个请求逻辑就可是直接使用 req.session.user 来获取 user 对象了。

session:function(req, res, next){

 

    req.session = {};

    if( req.cookies && req.cookies.sid ){
        var a = req.cookies.sid.split("|");
        var hexMail = a[0];

        var hexPwd = a[1];

        var hexRandom = a[2];

       
        UserModel.hexFind(hexMail, hexPwd, hexRandom, function( status ){
            //console.log("hexFind", status );

            if(status.code == "0"){

                //req.cookiesSelecter = cookiesSelecter;

                req.session.user = status.result;

                

            }

            next();

        });

        

    }else{

        

        next();
    }  

  

}

以上就是nodejs 的 session 简单使用的全部内容,希望能给大家一个参考,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
Nodejs进程管理模块forever详解
Jun 01 NodeJs
nodejs教程之异步I/O
Nov 21 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
Nodejs下用submit提交表单提示cannot post错误的解决方法
Nov 21 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
nodejs实现简单的gulp打包
Dec 21 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 NodeJs
详解nodejs与javascript中的aes加密
May 22 #NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 #NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 #NodeJs
Nodejs学习item【入门手上】
May 05 #NodeJs
NodeJS的Promise的用法解析
May 05 #NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 #NodeJs
Nodejs Stream 数据流使用手册
Apr 17 #NodeJs
You might like
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
python 伯努利分布详解
2020/02/25 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
优秀团员个人的自我评价
2013/10/02 职场文书
公司面试感谢信
2014/02/01 职场文书
大学教师个人总结
2015/02/10 职场文书
劳动仲裁调解书
2015/05/20 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书