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 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
win系统下nodejs环境安装配置
May 04 NodeJs
nodejs集成sqlite使用示例
Jun 05 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 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
如何做到多笔资料的同步
2006/10/09 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
MooTools 1.2介绍
2009/09/14 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
python字典多键值及重复键值的使用方法(详解)
2016/10/31 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
社团成立邀请函
2014/01/08 职场文书
学期个人自我总结
2015/02/13 职场文书
毕业论文致谢词
2015/05/14 职场文书
2015年国庆节寄语
2015/08/17 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
如何理解python接口自动化之logging日志模块
2021/06/15 Python