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中的this详解
Mar 26 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
详解Nodejs内存治理
May 13 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 05 NodeJs
浅谈Node的内存泄露问题
May 06 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接收POST数据方式
2015/06/05 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
Yii全局函数用法示例
2017/01/22 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
过虑特殊字符输入的js代码
2010/08/05 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
在pycharm中显示python画的图方法
2019/08/31 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
python openpyxl模块的使用详解
2021/02/25 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
会计岗位职责
2015/02/03 职场文书
稽核岗位职责
2015/02/10 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
小学数学国培研修日志
2015/11/13 职场文书
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB
MySql分区类型及创建分区的方法
2022/04/13 MySQL