当前位置:网站首页 > Node.js开发 > 正文

Node学习(九)064-会话技术简介之session的设置和获取——设置与获取之express-session模块& session有效期& 删除session& cookie和session的原理

Node学习(九)064-会话技术简介之session的设置和获取——设置与获取之express-session模块& session有效期& 删除session& cookie和session的原理

3. session技术

3.1 session介绍

  • 因为cookie是保存在客户端的数据,不够安全,所以出现了session。
  • session会将数据保存到服务器端(保存在文件、内存服务器或数据表中),安全性就可以得到保证。

3.2 设置/读取session

express设置session时,需要使用第三方模块 — express-session

npm i express-session # 也可以使用 cookie-session 模块 https://github.com/expressjs/session 

使用步骤:

  1. 加载 express-session 模块
  2. 将session注册为中间件(这样,当有请求过来的时候,都会先经过中间件)
  3. 使用 req.session 对象设置/读取session
//1. 加载 express-session 模块 const session = require('express-session'); //2. 配置项 let conf = { 
    secret: '4ey32erfyf3fgpg', //加密字符串。 使用该字符串来加密session数据,自定义 resave: false, //强制保存session即使它并没有变化 saveUninitialized: false //强制将未初始化的session存储。当新建了一个session且未 //设定属性或值时,它就处于未初始化状态。 }; //3. 注册为express-session中间件 app.use(session(conf)); app.get('/test1', (req, res) => { 
    // 设置session req.session.yzm = '7890'; res.send('session设置成功'); }); app.get('/test2', (req, res) => { 
    console.log(req.session.yzm); res.send('获取成功'); }); app.get('/test3', (req, res) => { 
    console.log(req.session.yzm); res.send('获取成功'); }); 

4)在session文件夹下,执行命令,启动服务

nodemon ./app.js #或者 node ./app.js 

服务启动效果

在这里插入图片描述

页面验证效果——test1设置成功、test2获取成功

在这里插入图片描述

在这里插入图片描述

3.3 session有效期

  • 当服务器关闭后,session消失
  • express-session会将session保存在内存中,每次重启服务器时即使没有关闭浏览器session也会消失

学习阶段都是开发环境,服务器一会关闭了,一会开启了。

开发环境中,session是保存在内存中的,所以关闭服务器,session就消失了

生产环境中session的有效期要设置在配置项中,cookie: {maxAge: },session应该保存到内存服务器中

3.4 删除session

核心: req.session.destroy() 销毁所有session

// 删除所有session req.session.destroy((err) => { 
    if (err) { 
    // 删除失败 } else { 
    // 删除成功 } }); 

3.5 session 的有效范围

在一个网站中设置了session,则整个网站都能找到这个session

4. cookie、session原理

cookie原理:

在这里插入图片描述

session原理:

服务器端会为每个用户(浏览器)各自保存一个session(文件)

下次用户再来访问的时候,就不能确定该用户的session是哪一个了

所以当服务器保存session之后,会以cookie的形式告诉浏览器,你的session是哪一个

下次再来访问服务器的时候,浏览器就会带着它自己的session号去访问,服务器就可以找到对应的session了

在这里插入图片描述

到此这篇Node学习(九)064-会话技术简介之session的设置和获取——设置与获取之express-session模块& session有效期& 删除session& cookie和session的原理的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • Node学习(九)065-会话技术简介之cookie和session的优缺点——cookie-优点是节省服务器空间,缺点不安全 & session-优点是安全,缺点需要服务器空间 & 语法之设置和获取2024-12-01 12:09:05
  • Node学习(九)07-使用验证码——必须登录才能访问页面 & 模糊搜索的时候重置分页页码2024-12-01 12:09:05
  • Node.js 网络通信(一)——网络通信相关概念、网络七层模型、mac 地址之ip地址、Port 端口号、域名 & TCP-传输控制协议、UDP-用户数据报协议、Socket套接字2024-12-01 12:09:05
  • Node.js 网络通信(二)01-构建TCP服务——TCP全名为传输控制协议,属于传输层协议,如http协议 & 显著特征是在传输之前需要三次握手形成会话 & Socket通信模型2024-12-01 12:09:05
  • Node.js 网络通信(二)02-构建UDP服务——UDP简介 & UDP三种传播方式-单播、广播、组播 & UDP一对多通信场景 & dgram模块用于构建UDP服务之Socket方法和事件2024-12-01 12:09:05
  • Node学习(九)063-会话技术简介之cookie的设置和获取——会话控制的分类之cookie-保存客户端(浏览器)、session-保存服务器 & cookie的设置与获取 & cookie有效期2024-12-01 12:09:05
  • Node学习(九)061-管理系统之登录和注册——md5加密 & 前端注册成功跳转登录页 & 前端登录成功跳转首页 & node服务器之post接口写法2024-12-01 12:09:05
  • Node学习(九)023-管理系统之添加英雄——文件上传-multer第三方模块之multer简介、multer配置、multer使用 & 使用myupload.single() 方法作为接口的中间件2024-12-01 12:09:05
  • Node学习(八)02-Node中的模块化——用module.exports实现模块化-封装并导出db.js模块之mysql增删改查& 步骤之连服务器、键值照应、封装导出模块、导入模块并打印服务器数据2024-12-01 12:09:05
  • Node学习(八)01-Node中的模块化——一个js文件就是一个模块& js中声明的属性和方法挂载global对象下则是全局作用域&module.exports导出属性和方法&require导入模块2024-12-01 12:09:05
  • 全屏图片