node.js 中间件express-session使用详解


Posted in Javascript onMay 20, 2017

本文介绍的关于node.js中间件express-session的相关内容,分享出来供大家从参考学习,下面来一起看看详细的介绍:

一、为什么使用session?

session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存。

当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截。

session可以和Redis或者数据库等结合做持久化操作,当服务器挂掉时也不会导致某些客户信息(购物车)丢失。

二、session的工作流程:

当浏览器访问服务器并发送第一次请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对, 然后将key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带key(cookie),找到对应的session(value) 。 客户的信息都保存在session中。

三、express-session的常用参数:

secret:一个String类型的字符串,作为服务器端生成session的签名。

name:返回客户端的key的名称,默认为connect.sid,也可以自己设置。

resave:(是否允许)当客户端并行发送多个请求时,其中一个请求在另一个请求结束时对session进行修改覆盖并保存。

默认为true。但是(后续版本)有可能默认失效,所以最好手动添加。

saveUninitialized:初始化session时是否保存到存储。默认为true, 但是(后续版本)有可能默认失效,所以最好手动添加。

cookie:设置返回到前端key的属性,默认值为{ path: ‘/', httpOnly: true, secure: false, maxAge: null }

express-session的一些方法:

Session.destroy() :删除session,当检测到客户端关闭时调用。

Session.reload() :当session有修改时,刷新session。

Session.regenerate() :将已有session初始化。

Session.save() :保存session。

四、示例demo

//app.js中添加如下代码(已有的不用添加)
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');

app.use(cookieParser('sessiontest'));
app.use(session({
 secret: 'sessiontest',//与cookieParser中的一致
 resave: true,
 saveUninitialized:true
}));
//修改router/index.js,第一次请求时我们保存一条用户信息。
router.get('/', function(req, res, next) {
 var user={
  name:"Chen-xy",
  age:"22",
  address:"bj"
 }
 req.session.user=user;
 res.render('index', {
  title: 'the test for nodejs session' ,
  name:'sessiontest'
 });
});
//修改router/users.js,判断用户是否登陆。
router.get('/', function(req, res, next) {
 if(req.session.user){
  var user=req.session.user;
  var name=user.name;
  res.send('你好'+name+',欢迎来到我的家园。');
 }else{
  res.send('你还没有登录,先登录下再试试!');
 }
});

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
记录几个javascript有关的小细节
Apr 02 Javascript
JS中令人发指的valueOf方法介绍
Feb 22 Javascript
JS:window.onload的使用介绍
Nov 13 Javascript
jquery 选取方法都有哪些
May 18 Javascript
js使用心得分享
Jan 13 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
Mar 25 Javascript
JS鼠标拖拽实例分析
Nov 23 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
Mar 15 Javascript
微信小程序中的onLoad详解及简单实例
Apr 05 Javascript
node.js学习之事件模块Events的使用示例
Sep 28 Javascript
js实现3D照片墙效果
Oct 28 Javascript
JS 调试中常见的报错问题解决方法
May 20 #Javascript
详解使用angular-cli发布i18n多国语言Angular应用
May 20 #Javascript
ztree实现权限横向显示功能
May 20 #Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 #Javascript
在使用JSON格式处理数据时应该注意的问题小结
May 20 #Javascript
微信小程序利用co处理异步流程的方法教程
May 20 #Javascript
关于jQuery库冲突的完美解决办法
May 20 #jQuery
You might like
php获取一个变量的名字的方法
2014/09/05 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
javascript每日必学之继承
2016/02/23 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
Python读写文件基础知识点
2019/06/10 Python
Python遍历字典方式就实例详解
2019/12/28 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
在校学生职业规划范文
2014/01/08 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL