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 miniui 教程 表格控件 合并单元格应用
Nov 25 Javascript
Js,alert出现乱码问题的解决方法
Jun 19 Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 Javascript
返回函数的JavaScript函数
Jun 14 Javascript
Javascript json object 与string 相互转换的简单实现
Sep 27 Javascript
JQuery validate 验证一个单独的表单元素实例
Feb 17 Javascript
node.js平台下的mysql数据库配置及连接
Mar 31 Javascript
微信小程序动态生成二维码的实现代码
Jul 25 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
Aug 12 Javascript
Vue点击切换颜色的方法
Sep 13 Javascript
解决layui页面按钮点击无反应,也不报错的问题
Sep 29 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+MSSQL分页的例子
2006/10/09 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
PHP批量修改文件名称的方法分析
2017/02/27 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
python中list列表的高级函数
2016/05/17 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
艺术用品:Arteza
2018/11/25 全球购物
元旦晚会邀请函
2014/01/27 职场文书
岗位明星事迹材料
2014/05/18 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
2014年环保局工作总结
2014/12/11 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
详细介绍python操作RabbitMq
2022/04/12 Python