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 相关文章推荐
Jquery工作常用实例 使用AJAX使网页进行异步更新
Jul 26 Javascript
使用Jquery实现点击文字后变成文本框且可修改
Sep 21 Javascript
js中通过split函数分割字符串成数组小例子
Sep 21 Javascript
详解AngularJS中module模块的导入导出
Dec 10 Javascript
关于动态执行代码(js的Eval)实例详解
Aug 15 Javascript
JS 在数组指定位置插入/删除数据的方法
Jan 12 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
Feb 12 Javascript
Angular 如何使用第三方库的方法
Apr 18 Javascript
解决循环中setTimeout执行顺序的问题
Jun 20 Javascript
小程序绑定用户方案优化小结
May 15 Javascript
Nuxt使用Vuex的方法示例
Sep 06 Javascript
ant design实现圈选功能
Dec 17 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在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
PHP引用符&的用法详细解析
2013/08/22 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
php文件上传类的分享
2017/07/06 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
理解Python垃圾回收机制
2016/02/12 Python
python实现简单http服务器功能
2018/09/17 Python
python实现猜拳小游戏
2020/04/05 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
python单例设计模式实现解析
2020/01/07 Python
python中列表的含义及用法
2020/05/26 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
精选奢华:THE LIST
2019/09/05 全球购物
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js