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技术-屏蔽类
Aug 15 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
May 12 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
Feb 16 Javascript
js获取滚动距离的方法
May 30 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
Jan 28 Javascript
一些实用性较高的js方法
Apr 19 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
Aug 23 Javascript
Vue2 使用 Echarts 创建图表实例代码
May 18 Javascript
slideToggle+slideup实现手机端折叠菜单效果
May 25 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
Feb 07 Javascript
微信小程序实现通讯录列表展开收起
Nov 18 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多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
Javascript 入门基础学习
2010/03/10 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
django静态文件加载的方法
2018/05/20 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python同步两个文件夹下的内容
2019/08/29 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
PyQt QMainWindow的使用示例
2021/03/24 Python
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
文艺节目主持词
2015/07/06 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python