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 相关文章推荐
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
Aug 02 Javascript
javascript dom追加内容实现示例
Sep 21 Javascript
BootStrap selectpicker
Jun 20 Javascript
简单实现AngularJS轮播图效果
Apr 10 Javascript
详解在 Angular 项目中添加 clean-blog 模板
Jul 04 Javascript
jQuery实现的简单获取索引功能示例
Jun 04 jQuery
Vue 中axios配置实例详解
Jul 27 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
Sep 11 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
Nov 14 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
JavaScript实现贪吃蛇游戏
Jun 16 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
mysql 全文搜索 技巧
2007/04/27 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
PHP7 弃用功能
2021/03/09 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python中的二维列表实例详解
2018/06/19 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
pymysql模块的操作实例
2019/12/17 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
Python多进程编程常用方法解析
2020/03/26 Python
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
社团2014年植树节活动总结
2014/03/11 职场文书
表彰大会主持词
2014/03/26 职场文书
薪资证明范本
2015/06/19 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
Java获取e.printStackTrace()打印的信息方式
2021/08/07 Java/Android
javascript Number 与 Math对象的介绍
2021/11/17 Javascript