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面向对象知识串结(读JavaScript高级程序设计(第三版))
Jul 17 Javascript
SyntaxHighlighter 3.0.83使用笔记
Jan 26 Javascript
45个JavaScript编程注意事项、技巧大全
Feb 11 Javascript
跟我学习javascript的prototype使用注意事项
Nov 17 Javascript
理解javascript定时器中的setTimeout与setInterval
Feb 23 Javascript
判断js的Array和Object的实现方法
Aug 29 Javascript
Centos7 中 Node.js安装简单方法
Nov 02 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
Jan 18 Javascript
JS实现按钮颜色切换效果
Sep 05 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
vue下拉菜单组件(含搜索)的实现代码
Nov 25 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
May 10 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
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
PHP 数字左侧自动补0
2008/03/31 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
php编写简单的文章发布程序
2015/06/18 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
JS获取IP、MAC和主机名的五种方法
2013/11/14 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
js友好的时间返回函数
2016/08/24 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
Django自定义分页与bootstrap分页结合
2021/02/22 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
对Python w和w+权限的区别详解
2019/01/23 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
详解python中各种文件打开模式
2020/01/19 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
工程班组长岗位职责
2013/12/30 职场文书
募捐倡议书
2014/04/14 职场文书
销售员岗位职责范本
2015/04/11 职场文书
人事聘任通知
2015/04/21 职场文书
导游词之无锡唐城
2019/12/12 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸