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 面向对象编程 聊聊对象的事
Sep 17 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
Mar 15 Javascript
jquery获取子节点和父节点的示例代码
Sep 10 Javascript
JS保存和删除cookie操作 判断cookie是否存在
Nov 13 Javascript
扩展JS Date对象时间格式化功能的小例子
Dec 02 Javascript
JS实现控制表格行文本对齐的方法
Mar 30 Javascript
浅谈jquery设置和获得checkbox选中的问题
Aug 19 Javascript
在vue-cli项目中使用bootstrap的方法示例
Apr 21 Javascript
Vue作用域插槽slot-scope实例代码
Sep 05 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
May 12 Javascript
0基础学习前端开发的一些建议
Jul 14 Javascript
Echarts如何重新渲染实例详解
May 30 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
基于文本的搜索
2006/10/09 PHP
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
奇妙的js
2007/09/24 Javascript
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
range 标准化之获取
2011/08/28 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
python实现对变位词的判断方法
2020/04/05 Python
python中四舍五入的正确打开方式
2021/01/18 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
省级四好少年事迹材料
2014/01/25 职场文书
酒鬼酒广告词
2014/03/21 职场文书
房产继承公证书
2014/04/09 职场文书
售后服务承诺书模板
2014/05/21 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
工人先锋号申报材料
2014/12/29 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
中学生逃课检讨书
2015/02/17 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
Python find()、rfind()方法及作用
2022/12/24 Python