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

news2024/11/18 13:54:32

文章目录

  • 前言
  • 一、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') // 可以设置多个cookie
    res.send('home')
})

app.listen(9000, () => {
    console.log('服务器启动成功');
})

在这里插入图片描述

2.删除cookie

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

// 删除cookie
app.get('/remove-cookie', (req, res) => {
    res.clearCookie('name'); // 删除键为name的cookie
    res.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') // 可以设置多个cookie
    res.send('home')
})

// 删除cookie
app.get('/remove-cookie', (req, res) => {
    res.clearCookie('name'); // 删除键为name的cookie
    res.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.sid
    secret: 'zhangsan', // 加密的字符串
    saveUninitialized: false, // 是否每次请求都设置一个cookie用来存储session的id
    resave: true, // 是否在每次请求的时候重新保存session
    store: 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.sid
    secret: 'zhangsan', // 加密的字符串
    saveUninitialized: false, // 是否每次请求都设置一个cookie用来存储session的id
    resave: true, // 是否在每次请求的时候重新保存session
    store: 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.coloradmin.cn/o/1200231.html

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

相关文章

类和对象(3):拷贝构造函数

引入: class Stack { public:Stack(int capacity 3){_a (int*)malloc(sizeof(int) * capacity);if (nullptr _a){perror("malloc");exit(-1);}_top 0;_capacity capacity;}~Stack(){free(_a);_top _capacity 0;_a nullptr;}private:int* _a;int _…

终止进程,GPU显存仍被占用 | kill -9彻底杀死进程

问题描述:在Linux终端把进程终止后,发现显存没有被释放出来! 显示所有进程 ps aux|grep python杀死单个进程 kill -9 PID杀死多个进程 kill -9 PID PID PID...结果如下,显存已经被释放出来了!

【操作系统】1.1 操作系统的基础概念、功能以及特性

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

gpt支持json格式的数据返回(response_format: ‘json_object‘)

Api.h5.chatCreateChatCompletion({model: gpt-3.5-turbo-1106,token: sk-f4fe8b67-fcbe-46fd-8cc9-fd1dac5d6d59,messages: [{role: user,content:使用json格式返回十二生肖,包含中文名和英文名,[{id:"1", enName:"", cnName: &quo…

Python 多进程多线程

多任务 并发:在一段时间内交替执行多个任务 并行:在一段时间内同事一起执行多个任务 进程 Process 进程:一个程序运行在系统之上, 便称这个程序喂一个运行进程,并分配进程ID方便系统管理。操作系统进行资源分配和调…

Android开发之apk瘦身计划

为什么apk越来越大? 1.项目不断发展,功能越多,代码量增加的同时,资源文件也在不断的增多。 2.app支持的主流dpi越来越多,如ldpi、mdpi、hdpi、xh xxh xxxh等等,间接导致资源增多。 3.引入的第三方sdk或开…

Linux进程空间地址

程序地址空间回顾 问题引入 ---------------明天再写0.0

Linux提取RPM包文件

在讲解如何从 RPM 包中提取文件之前,先来系统学习一下 cpio 命令。cpio 命令用于从归档包中存入和读取文件,换句话说,cpio 命令可以从归档包中提取文件(或目录),也可以将文件(或目录&#xff09…

【Go入门】面向对象

【Go入门】面向对象 前面两章我们介绍了函数和struct,那你是否想过函数当作struct的字段一样来处理呢?今天我们就讲解一下函数的另一种形态,带有接收者的函数,我们称为method method 现在假设有这么一个场景,你定义…

Qt贝塞尔曲线

目录 引言核心代码基本表达绘制曲线使用QEasingCurve 完整代码 引言 贝塞尔曲线客户端开发中常见的过渡效果,如界面的淡入淡出、数值变化、颜色变化等等。为了能够更深的了解地理解贝塞尔曲线,本文通过Demo将贝塞尔曲线绘制出来,如下所示&am…

SPC 的一些小知识

在生产管理系统种,经常回涉及到质量管理分,我们经常听说SPC、SPC控制图等和SPC相关的词汇,那么SPC是什么意思呢?它有什么作用呢?在这里通俗一点介绍一下SPC。 SPC是统计过程控制(Statistical Process Cont…

xsschallenge通关攻略详解

xsschallenge通过攻略 文章目录 xsschallenge通过攻略第一关第二关第三关第四关第五关第六关第七关第八关第九关第十关第十一关第十二关第十三关 简述 xsschallenge挑战攻略 ps: 终极测试代码 <sCr<ScRiPt>IPT>OonN"\/(hrHRefEF)</sCr</ScRiPt>IPT&g…

系列八、Mybatis一对多查询,只查询出了一条记录

一、Mybatis一对多查询&#xff0c;只查询出了一条记录 1.1、问题说明 典型的权限管理框架的数据库表中&#xff0c;一般会存在这样3种角色的表&#xff0c;即用户表、角色表、用户角色关联表&#xff0c;表设计好之后&#xff0c;往这三张表中初始化了一些测试数据&#xff0…

LOW-POWER AUDIO KEYWORD SPOTTING USING TSETLIN MACHINES

基于TM的低功耗语音关键字识别 摘要1介绍2TM的介绍3KWS的音频预处理技术4实验结果MFC4.1C设置分位数数量4.3增加关键词数量4.4 声音相似的关键词4.5 每个类别的子句数量对KWS-TM的比较学习收敛和复杂性分析 摘要 在本文中&#xff0c;我们探讨了一种基于TM的关键词识别&#x…

【MySQL系列】第二章 · SQL(上)

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

【云备份项目两万字总结】服务端篇 -----附源码

项目总结 整体回顾逐步实现utill.hppconfig.hppdata.hpphot.hppservice.hpp 代码 整体回顾 服务端的目标是&#xff1a; 对客户端的请求进行处理管理客户端上传的文件 于客户端进行数据交换&#xff0c;我们需要引入网络&#xff0c;所以我们引入第三方库----httplib.h库&am…

【Git】Git分支与应用分支Git标签与应用标签

一&#xff0c;Git分支 1.1 理解Git分支 在 Git 中&#xff0c;分支是指一个独立的代码线&#xff0c;并且可以在这个分支上添加、修改和删除文件&#xff0c;同时作为另一个独立的代码线存在。一个仓库可以有多个分支&#xff0c;不同的分支可以独立开发不同的功能&#xff0…

劲松HPV防治诊疗中心发布:HPV感染全面防治解决方案

在当今社会&#xff0c;HPV(人乳头瘤病毒)感染问题已成为广大公众关注的焦点。作为一种高度传染性的病毒&#xff0c;HPV感染不仅可能导致生殖器疣&#xff0c;还可能引发各种癌症。面对这一严重威胁&#xff0c;劲松HPV防治诊疗中心以其专业的医疗团队、正规的治疗流程和全方位…

操作系统(二)内存管理的基础知识

文章目录 前言内存管理地址空间与地址生成连续内存分配内存碎片连续分配算法碎片整理 非连续内存分配虚拟内存管理虚拟内存地址内存分段内存分页段页式内存管理虚拟内存的覆盖技术虚拟内存的交换技术 缺页异常内存页面置换算法局部页面置换算法Belady现象全局页面置换算法抖动和…