node 第十八天 中间件express-session实现会话密钥

  1. express-session 文档
    express-session 一个简单的express会话中间件

  2. 使用场景
    在一个系统中, 需要维持一个临时的与登录态无关的会话密钥
    比如登录系统后, 请求某一个接口, 接口的行为与登录态无关, 也就是说任何人对接口的访问都是一样的,服务端不关心客户端是谁, 但是为了服务特定用户(比如能够登录该系统的用户),又必须有一个密钥来做验证,请求密钥时验证用户的登录状态,验证成功, 则发送密钥。 用户拿到密钥后就可以和服务端通信, 而通信过程不需要带上用户信息, 服务端也不会关心用户信息。

  3. 使用
    node

    const session = require('express-session');
    app.use(
      session({
        secret: 'myscret',
        resave: false,
        saveUninitialized: true,
        name: 'token'
      })
    );
    //服务端设置会话密钥,发送给客户端加密后的密钥
    //虽然接口叫做login其实和登录没有联系
    router.post('/login', (req, res, next) => {
      req.session.token = '10086';
      res.send(200, {
        msg: 'ok'
      });
    });
    //需要会话密钥验证的接口
    router.post('/request', (req, res, next) => {
      console.log(req.session);
      if (req.session.token && req.session.token === '10086') {
        res.send(200, {
          msg: 'get'
        });
        return;
      }
      res.send(200, {
        msg: 'error reject'
      });
    });
    //服务端销毁会话密钥
    router.post('/logout', (req, res, next) => {
      req.session.destroy(() => {
        res.send({
          msg: 'logout'
        });
      });
    });
    
  4. 其实这种场景比较少, 大多数的场景还是需要对用户的状态做出区分, 而且关联上用户状态也是可以涵盖这种场景的

  5. 使用注意, 如果前后端跨域 【注释一】 你需要注意, 跨域如何设置cookie(如果你读过文档, 你会知道这个中间件是基于cookie实现的)已经在node第十一天说过。
    在这里插入图片描述
    这是mdn的文档描述, 但是你无法在本地跨域的情况下使用使用这个中间件, 因为此中间件对于跨域设置cookie会忽略掉,即使是 locahost 。从规范的角度来说这里应该是这个中间件的不足之处

  6. 【注释一】 这里的跨域准确来说应该是至少域名/ip存在不同,而不能仅仅是端口号不同

  7. 这种会话模式显然是将凭证维护在服务端, 与之对应的还有另外一种方式, 也就是现在被广泛运用的token,把凭证维护在客户端。详见node 第十九天

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3.5 Linux 用户管理

1、账号 & 组账号 inux基于用户身份对资源访问进行控制,Linux 属于多用户的操作系统 a. Linux 用户 按建立方式分类: 内建账户: 由系统或程序自行建立的账户自定义账户: 管理员或特权人员手工建立 按权限分类: 特权账户: 有对系统或…

【proverif】proverif的语法-解决中间人攻击-代码详解

系列文章目录 【proverif】proverif的下载安装和初使用【proverif】proverif的语法(本文) 文章目录 系列文章目录前言:proverif-密码学领域中的客观第三方评价工具一、从官网学正规语法二、细看用户手册1. 声明形式的加密原语2. 握手协议-中…

【10套模拟】【5】

关键字: 数据的最小单位、归并排序(两两归并)、单链表顺序存取、邻接表表头顶点顺序存储随机访问、三角矩阵元素个数、堆的性质、冒泡排序、二叉树是否相同

MATLAB与Excel的数据交互

准备阶段 clear all % 添加Excel函数 try Excel=actxGetRunningServer(Excel.Application); catch Excel=actxserver(Excel.application); end % 设置Excel可见 Excel.visible=1; 插入数据 % % 激活eSheet1 % eSheet1.Activate; % 或者 % Activate(eSheet1); % % 打开…

疑似openAI的BUG

Chat gpt 4.0 『最新数据2023年』 Chat gpt 3.5 智商不在线『最近数据2021年9月左右』 发现了疑似openAI的一个bug 通过固定连接访问就可以用chatgpt4.0 4.0版本的费用为20美金一个月 https://chat.openai.com/?modelgpt-4-gizmo

Angular 由一个bug说起之二:trackBy的一点注意事项

trackBy是angualr优化项目性能的一种方法, 通过返回一个具有绑定性的唯一值, 比如id,手机号,身份证号之类的,来让angular能够跟踪数组的项目,根据数据的变化来重新生成DOM, 这样就节约了性能。 但是如果是使用ngFor循环组件&…

制造企业MES管理系统解决方案的深化应用

随着制造业的发展,生产车间管理一直是企业面临的难题。生产过程繁忙而混乱,信息不流通,生产效率低下等问题频发。为了解决这些问题,企业管理者急需寻找有效的解决方案。这时,MES管理系统解决方案应运而生,成…

Linux网络之传输层协议tcp/udp

文章目录 目录 一、再谈端口号 1.端口号划分 2.知名端口号 3.netstat,pidof 二、UDP协议 1.udp协议格式 2.udp特点 3.基于udp的应用层协议 三、TCP协议 1.tcp报头 确认应答机制(ACK) 超时重传机制 连接管理机制(三次握手四次挥…

div中的两个元素怎么实现上下排列

案例: 这里面的分享活动页和获取抽奖机会两个文字上下排列怎么实现? 答案: 父元素加上两个属性: display: flex; flex-direction: column; 就实现了

正则表达式,你不会用太可惜

文章目录 说明创建正则表达式的三种方式方式一方式二方式三 正则表达式修饰符i (IgnoreCase)g (global)m (multiple lines) 正则表达式[ ]() 元字符.w 是word的缩写d 是digit的缩写s 是 space的缩写其它间隙元字符 不占位修饰符b是…

C++泛型编程——模板(初识)

C泛型编程——模板(初识) 文章目录 C泛型编程——模板(初识)1. 泛型编程的概念2. 模板2.1 模板格式2.2 函数模板2.3 函数模板的实例化2.3.1 隐式(推演)实例化2.3.2 显式实例化 2.3 类模板3. 模板的本质 本章…

ES7升级、jar包升级、工具类封装,代码改造

一、spring-data-elasticsearch 引入es版本适配 二、jar升级 在项目工程根pom.xml文件中增加maven依赖管理在这里插入图片描述<properties><elasticsearch.spring.version>4.2.0</elasticsearch.spring.version>

Genio 500_MT8385安卓核心板:功能强大且高效

Genio 500(MT8385)安卓核心板是一款功能强大且高效的AIoT平台&#xff0c;内置的AI处理器(APU)工作频率可达500MHz&#xff0c;支持深度学习、神经网络加速和计算机视觉应用。配合高达2500万像素的摄像头&#xff0c;可以为AI相机应用提供清晰、精确的图像&#xff0c;如人脸识…

怎么防止U盘复制电脑文件

随着信息化的快速发展&#xff0c;数据安全问题越来越受到人们的关注。U盘作为一种常用的数据传输工具&#xff0c;有时会被用于非法复制电脑文件&#xff0c;从而给企业或个人带来损失。因此&#xff0c;防止U盘复制电脑文件成为保护数据安全的重要措施之一。 一、我们应该提高…

为什么原生IP可以降低Google play账号关联风险?企业号解决8.3/10.3账号关联问题?

在Google paly应用上架的过程中&#xff0c;相信大多数开发者都遇到过开发者账号因为关联问题&#xff0c;导致应用包被拒审和封号的情况。 而众所周知&#xff0c;开发者账号注册或登录的IP地址及设备是造成账号关联的重要因素之一。酷鸟云最新上线的原生IP能有效降低账号因I…

TensorRT基础知识及应用【学习笔记(十)】

这篇博客为修改过后的转载&#xff0c;因为没有转载链接&#xff0c;所以选了原创 文章目录 一、准备知识1.1 环境配置A. CUDA DriverB. CUDAC. cuDNND. TensorRT 1.2 编程模型 二、构建阶段2.1 创建网络定义2.2 配置参数2.3 生成Engine2.4 保存为模型文件2.5 释放资源 三、运…

一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)

我们知道Python是一门解释型语言&#xff0c;项目运行时需要依赖Python解释器&#xff0c;并且有时候需要安装项目中对应的三方依赖库。对于专业的Python开发者来说&#xff0c;可以直接通过pip命令进行安装即可。但是如果是分发给其他的Windows用户&#xff0c;特别是不熟悉Py…

【网络奇幻之旅】那年我与互联网的邂逅

&#x1f33a;个人主页&#xff1a;Dawn黎明开始 &#x1f380;系列专栏&#xff1a;网络奇幻之旅 ⭐每日一句&#xff1a;不想留在过去&#xff0c;就要变得更好 &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️ 文章目录 &a…

SaaS与PaaS平台的区别

目录 一、前言 二、SaaS化与PaaS化平台的区别 三、PaaS化的低代码平台更胜一筹 PaaS优势&#xff1a; 支持PaaS服务的低代码平台 1.私有化部署&#xff0c;为数据安全保驾护航 2.业内领先技术&#xff0c;为开发强势赋能 3.超强集成能力&#xff0c;系统对接无忧 4.源代码交付&…

企业微信获取第三方应用凭证

上一篇介绍了如何配置通用开发参数及通过url回调验证&#xff0c; 本篇将通过服务商后台配置关联小程序应用配置和获取第三方凭证及如何配置企业可信IP。 当然上篇配置的回调设置也不会白费&#xff0c;在下方的指令和数据回调会用到。 第三方应用开发流程 官方企业微信第三方…