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极简入门教程(二):定时器
Oct 25 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
详解nodejs中exports和module.exports的区别
Feb 17 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 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
Terran兵种介绍
2020/03/14 星际争霸
基于文本的搜索
2006/10/09 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
CCPry JS类库 代码
2009/10/30 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
动态更新highcharts数据的实现方法
2016/05/28 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
微信小程序的分类页面制作
2017/06/27 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
flask框架中勾子函数的使用详解
2018/08/01 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
国税会议欢迎词
2014/01/16 职场文书
教师个人剖析材料
2014/02/05 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
三方协议书
2015/01/27 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python
dubbo服务整合zipkin详解
2021/07/26 Java/Android
使用scrapy实现增量式爬取方式
2022/06/21 Python