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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
14款NodeJS Web框架推荐
Jul 11 NodeJs
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
详解nodejs 文本操作模块-fs模块(五)
Dec 23 NodeJs
Nodejs基于LRU算法实现的缓存处理操作示例
Mar 17 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 05 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
收藏的一个php小偷的核心程序
2007/04/09 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
Javascript中Eval函数的使用
2010/03/23 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
Webpack3+React16代码分割的实现
2021/03/03 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python检测远程服务器tcp端口的方法
2015/03/14 Python
Ubuntu下安装PyV8
2016/03/13 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
python画折线图的程序
2018/07/26 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
安全事故检讨书
2014/01/18 职场文书
庆七一晚会主持词
2015/06/30 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL