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计算页面执行时间的函数
Dec 07 Javascript
jQuery 白痴级入门教程
Nov 11 Javascript
jquery sortable的拖动方法示例详解
Jan 16 Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 Javascript
使用jQueryMobile实现滑动翻页效果的方法
Feb 04 Javascript
在Mac OS下使用Node.js的简单教程
Jun 24 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
Oct 25 Javascript
Vue-component全局注册实例
Sep 06 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
微信小程序3种位置API的使用方法详解
Aug 05 Javascript
Vue form表单动态添加组件实战案例
Sep 02 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使用MySQL保存session会话的方法
2015/06/26 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
PDO::_construct讲解
2019/01/27 PHP
javascript动态加载实现方法一
2012/08/22 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
详解参数传递四种形式
2015/07/21 Javascript
javascript常用函数(1)
2015/11/04 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
微信小程序 引入es6 promise
2017/04/12 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
vue实现搜索功能
2019/05/28 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
通过C++学习Python
2015/01/20 Python
Sublime开发python程序的示例代码
2018/01/24 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
家具厂厂长岗位职责
2014/01/01 职场文书
群众路线剖析材料
2014/02/02 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
个人售房合同协议书
2016/03/21 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS