node插件express(路由)的插件使用(二)——cookie 和 session的基本使用区别

文章目录

  • 前言
  • 一、express 框架中的 cookie
    • 0、cookie的介绍和作用
    • 1. 设置cookie
    • 2.删除cookie
    • 3.获取cookie
      • (1)安装cookie-parser
      • (2)导入cookie-parser
      • (3)注册中间件
      • (4)获取cookie
      • (5)操作和效果
    • 4. 设置、删除、获取cookie的代码
  • 二、express 框架中的 session
    • 1. 了解 session
    • 2. 安装
    • 3. 中间件的配置和详细说明(重点)
    • 4.基本使用
      • (0)所有代码
      • (1)设置session和效果
      • (2)获取session和效果
      • (3)获取session和效果
  • 总结


前言

提示:当你浏览以下内容的时候,希望你了解express的相关内容。同时,你的node包中安装了express的插件。


一、express 框架中的 cookie

0、cookie的介绍和作用

介绍:http服务器发送到用户浏览器并保存在本地的一小块数据(4kb)。
作用:存储保存在本地的数据。
特点:当用户关闭浏览器会自动销毁。

1. 设置cookie

const express = require('express')const app = express();// 设置cookie
app.get('/set-cookie', (req, res) => {// name 为 cookie 的键// zhagnsan为 cookie 的值// maxAge 是这个cookie 存在的事件,单位为毫秒res.cookie('name', 'zhagnsan', {maxAge: 10 * 1000})res.cookie('age', '18') // 可以设置多个cookieres.send('home')
})app.listen(9000, () => {console.log('服务器启动成功');
})

在这里插入图片描述

2.删除cookie

删除后,删除对应键的值,然后失效时间改为1970年。

// 删除cookie
app.get('/remove-cookie', (req, res) => {res.clearCookie('name'); // 删除键为name的cookieres.send('删除页面--删除成功!!!')
})

在这里插入图片描述

3.获取cookie

(1)安装cookie-parser

npm i cookie-parser

(2)导入cookie-parser

// 1:导入cookie-parser
const cookieParser = require('cookie-parser')

(3)注册中间件

// 创建应用对象
const app = express();// 2:设置cookie-parser中间件
app.use(cookieParser());

(4)获取cookie

// 获取cookie
app.get('/get-cookie', (req, res) => {console.log(req.cookies); res.send('获取cookie');
})

(5)操作和效果

先执行set-cookie的路由请求,后面执行get-cookie的路由请求

在这里插入图片描述

4. 设置、删除、获取cookie的代码

const express = require('express')
// 1:导入cookie-parser
const cookieParser = require('cookie-parser')
const app = express();// 2:设置cookie-parser中间件
app.use(cookieParser());
// 设置cookie
app.get('/set-cookie', (req, res) => {// name 为 cookie 的键// zhagnsan为 cookie 的值// maxAge 是这个cookie 存在的事件,单位为毫秒res.cookie('name', 'zhagnsan', {maxAge: 10 * 1000})res.cookie('age', '18') // 可以设置多个cookieres.send('home')
})// 删除cookie
app.get('/remove-cookie', (req, res) => {res.clearCookie('name'); // 删除键为name的cookieres.send('删除页面--删除成功!!!')
})// 获取cookie
app.get('/get-cookie', (req, res) => {console.log(req.cookies); res.send('获取cookie');
})app.listen(9000, () => {console.log('服务器启动成功');
})

二、express 框架中的 session

1. 了解 session

定义:是保存在服务端的一块数据,保存当前访问用户的相关信息。
作用:实现会话控制,可以识别用户的身份,快速获取用户的相关信息。

2. 安装

express-session: 在express进行session 操作
connect-mongo: 连接mongodb数据库,并对其进行一些操作。

npm i express-session connect-mongo

注意点:你还需要安装npm i mongo,不然会出现以下错误。

Error: Cannot find module ‘mongodb’
在这里插入图片描述

3. 中间件的配置和详细说明(重点)

const express = require('express')
// 1: 导入 express-session connect-mongo
const session = require('express-session')
const MongoStore = require('connect-mongo')const app = express();
// 2:设置session中间件
app.use(session({name: 'sid', // 设置cookie的name,默认为 connect.sidsecret: 'zhangsan', // 加密的字符串saveUninitialized: false, // 是否每次请求都设置一个cookie用来存储session的idresave: true, // 是否在每次请求的时候重新保存sessionstore: MongoStore.create({mongoUrl: 'mongodb://127.0.0.1:27017/project' // 数据库的连接配置}),cookie: {httpOnly: true, // 开启后 前端无法通过js操作,可以有效解决xxs攻击(跨站脚本攻击)maxAge: 1000 * 10 // 控制session的过期时间,单位为毫秒}
}));

4.基本使用

总结使用:
(1)设置值 req.session.username = ‘zhangsan’
(2)读取值 req.session.username
(3)销毁值 req.session.destroy(() => { res.send(‘退出成功’) })

(0)所有代码

const express = require('express')
// 1: 导入 express-session connect-mongo
const session = require('express-session')
const MongoStore = require('connect-mongo')const app = express();
// 2:设置session中间件
app.use(session({name: 'sid', // 设置cookie的name,默认为 connect.sidsecret: 'zhangsan', // 加密的字符串saveUninitialized: false, // 是否每次请求都设置一个cookie用来存储session的idresave: true, // 是否在每次请求的时候重新保存sessionstore: MongoStore.create({mongoUrl: 'mongodb://127.0.0.1:27017/project' // 数据库的连接配置}),cookie: {httpOnly: true, // 开启后 前端无法通过js操作,可以有效解决xxs攻击(跨站脚本攻击)maxAge: 1000 * 10 // 控制session的过期时间,单位为毫秒}
}));
// 默认首页的路由
app.get('/', (req, res) => {res.send('home')
})
// 3.1 设置session
app.get('/login', (req, res) => {if (req.query.username = 'zhangsan' && req.query.password == '123456') {req.session.username = 'zhangsan'req.session.password = '123456'res.send('登录成功')} else {res.send('登录失败')}
})
// 3.2 读取session
app.get('/home', (req, res) => {if (req.session.username) {res.send(`首页,欢迎您${req.session.username}`)} else {res.send('您还没有登录');}
})
// 3.3 销毁session
app.get('/logout', (req, res) => {req.session.destroy(() => {res.send('退出成功')})
})app.listen(9000, () => {console.log('服务器启动成功');
})

(1)设置session和效果

在这里插入图片描述

在这里插入图片描述

(2)获取session和效果

在这里插入图片描述

在这里插入图片描述

(3)获取session和效果

在这里插入图片描述
在这里插入图片描述


总结

cookie 和 session的区别
1:存在位置
cookie 浏览器端
session 服务器端
2:安全性
cookie 是以明文形式放在客户端的,安全性低
session是放在服务器端,安全性高
3:网络传输量
cookie 设置过多会影响传输效率
session 数据存储服务器中,通过cookie传递id,所以不影响传输效率
4:存储限制
cookie 不超过4k
session 存在服务器中,没有限制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/140472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Python分析时序数据集中的缺失数据

大家好,时间序列数据几乎每秒都会从多种来源收集,因此经常会出现一些数据质量问题,其中之一是缺失数据。 在序列数据的背景下,缺失信息可能由多种原因引起,包括采集系统的错误(例如传感器故障)…

Intel® DevCloud for oneAPI SYCL编程项目实践

问题陈述 实验所用的硬件环境和软件环境 本次实验使用oneAPI中支持SYCL编程模型的C编译器,使用英特尔oneAPI Developer Cloud服务,可以免安装额外环境,利用CPU作为主机(Host),同时利用GPU作为设备&#xf…

LCA

定义 最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。 性质 如果 不为 的祖先并且 不为 的祖先,那么 分别处于 的两棵不同子树中&#…

【机试题】LazyIterator迭代器懒加载问题

将下面这个未完成的Java工具类补充完成,实现懒加载的功能,该类需要实现Iterable接口,能够遍历所有数据。具体要求如下: 工具类提供了一个ValueLoader接口,用于获取数据,其中ValueLoader的接口定义为&#x…

修改django开发环境runserver命令默认的端口

runserver默认8000端口 虽然python manage.py runserver 8080 可以指定端口,但不想每次runserver都添加8080这个参数 可以通过修改manage.py进行修改,只需要加三行: from django.core.management.commands.runserver import Command as Ru…

二十四、W5100S/W5500+RP2040树莓派Pico<PHY的状态模式控制>

文章目录 1. 前言2. 相关简介2.1 简述2.2 原理2.3 优点&应用 3. WIZnet以太网芯片4. PHY模式配置测试4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 测试现象 5. 注意事项6. 相关链接 1. 前言 W5100S/W5500不仅支持自动PHY自动协商,而且支持用户自定义…

自动生成Form表单提交在苹果浏览器中的注意事项

以下是本人在公司旧系统中看到的该段代码 function Post(URL, PARAMTERS) {//创建form表单var temp_form document.createElement("form");temp_form.action URL;//如需打开新窗口,form的target属性要设置为_blanktemp_form.target "_blank"…

[EFI]技嘉 Z490 VISION G i5-10500 电脑 Hackintosh 黑苹果引导文件

硬件配置 硬件型号驱动情况主板技嘉 Z490 VISION G CLPC controller Z490芯片组)处理器英特尔 Core i5-10500 3.10GHz 六核已驱动内存16GB( 威到DDR42655MHz8GBx 2〕已驱动硬盘SSDSC2BB150G7R (150 GB/ 国态硬盘)已驱动显卡AMD Radeon RX 58…

[论文阅读] CLRerNet: Improving Confidence of Lane Detection with LaneIoU

Abstract 车道标记检测是自动驾驶和驾驶辅助系统的重要组成部分。采用基于行的车道表示的现代深度车道检测方法在车道检测基准测试中表现出色。通过初步的Oracle实验,我们首先拆分了车道表示组件,以确定我们方法的方向。我们的研究表明,现有…

Python之字符串、正则表达式练习

目录 1、输出随机字符串2、货币的转换(字符串 crr107)3、凯撒加密(book 实验 19)4、字符替换5、检测字母或数字6、纠正字母7、输出英文中所有长度为3个字母的单词 1、输出随机字符串 编写程序,输出由英文字母大小写或…

ESP32 BLE特征值示例

键盘特征值初始化示例 void BleKeyboard::begin(void) {BLEDevice::init(deviceName);BLEServer* pServer BLEDevice::createServer();pServer->setCallbacks(this);hid new BLEHIDDevice(pServer);inputKeyboard hid->inputReport(KEYBOARD_ID); // <-- input R…

大洋钻探系列之二IODP 342航次是干什么的?(上)

本文简单介绍一下大洋钻探IODP 342航次&#xff0c;从中&#xff0c;我们一窥大洋钻探航次的风采。 IODP342的航次报告在网络上可以下载&#xff0c;英文名字叫《Integrated Ocean Drilling ProgramExpedition 342 Preliminary Report》&#xff0c;航次研究的主要内容是纽芬兰…

【Linux】第十五站:环境变量

文章目录 一、进程相关的一些概念1.一些常见的概念2.对于并发3.**进程切换** 二、环境变量1.PATH环境变量2.HOME环境变量3.SHELL环境变量4.env5.系统调用接口与环境变量6.什么是环境变量&#xff1f;7.命令行参数8.main函数的第三个命令行参数9.如何验证环境变量是可以被继承的…

前端面试之事件循环

什么是事件循环 首先&#xff0c; JavaScript是一门单线程的语言&#xff0c;意味着同一时间内只能做一件事&#xff0c;这并不意味着单线程就是阻塞&#xff0c;而是实现单线程非阻塞的方法就是事件循环 在JavaScript中&#xff0c;所欲任务都可以分为&#xff1a; 同步任务…

【RPC】前传

前传 本地程序用的go语言&#xff0c;想把main.go程序当中一些计算工作放到服务器上进行&#xff0c;而只需要把结果给我即可。由于平台上暂时不能运行Go代码&#xff0c;所以写的是python文件。 1、主要是使用ssh依赖进行连接&#xff0c;但是大概率是需要手动添加的&#xf…

带头+双向+循环链表

前言&#xff1a; 前面我们已经学习了单链表的结构及其功能特点&#xff0c;也了解了单链表在实现一些功能时出现的一些缺点&#xff0c;比如在删除某个节点前面一个节点时就需要再开一个变量来存放前面一个节点的信息&#xff0c;这样就显得不灵活&#xff0c;为了使链表实现功…

网络编程学习笔记

参考&#xff1a; 套接字通信部分 《TCP/IP 网络编程》以及《TCP/IP网络编程》学习笔记 socket 编程 1. 字节序 字节序&#xff0c;顾名思义字节的顺序&#xff0c;就是大于一个字节类型的数据在内存中的存放顺序&#xff0c;也就是说对于单字符来说是没有字节序问题的&…

蓝桥杯国一,非ACMer选手保姆级经验分享

目录 一、前言二、蓝桥杯简介三、0基础计算机新手小白&#xff0c;赛前如何准备提高自己的获奖率&#xff1f;3.1 每两周参加一次【蓝桥算法双周赛】3.2 多练真题3.3 参加每一场官方校内模拟赛 四、结语 一、前言 hello&#xff0c;大家好&#xff0c;我是大赛哥(弟)&#xff…

1000道精心打磨的计算机考研题,408小伙伴不可错过

提示&#xff1a;408考研人看过来&#xff0c;超精选计算机考研1000题&#xff01; 文章目录 前言1. 为什么是1000题&#xff1f;2. 有什么优势&#xff1f;【练学结合&#xff0c;助力强化】【难度适中&#xff0c;但不刁钻】【题目新颖&#xff0c;独具匠心】【考题预测&…

Minio

Minio学习 MinioMinio介绍安装window安装1.下载服务端和客户端文件[地址](https://min.io/download#/windows)2.创建minio相关目录3.启动minio服务方式一方式二4.查看minio版本5.访问minio控制台 linux安装docker安装 Minio Minio介绍 MinIO 是在 Apache License v2.0 下发布…