概念

Session用于记录客户状态的一种机制,不同于Cookie的是,Cookie存储在客户端,而Session则将数据存储在服务器上

Session 的用途

session 运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存
当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截
session 可以和 Redis 或者数据库等结合做持久化操作,当服务器挂掉时也不会导致某些客户信息(购物车)丢失

工作原理

  1. 当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生成一个类似于key,value 的键值对
  2. 将 key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带 key(cookie),找到对应的 session(value)
  3. 最后将存在session中的信息返回到页面上

使用

  1. 项目中安装express-session和connect-mongo
    npm install express-session --save session插件
    npm install connect-mongo --save session数据存储到数据库

  2. 代码中使用
    ① 引入express-session

    let session = require('express-session');
    

    ② 引入connect-mongo用于express连接数据库存储session:结束数据库实现session持久化

    let mongoStore  = require('connect-mongo')(session);
    

    ③ 中间件使用session

    app.use(session({secret:'itlike',//加密字符串name:'likeid',//返回客户端key的名称,默认为connect_sidresave:false,//强制保存session,即使它没有变化saveUninitialized:true,//强制将未初始化的session存储。当新建一个session且未设定属性或值时,它就处于未初始化状态。在设定cookie前,这对于登录验证,减轻服务器存储压力,权限控制是有帮助的,默认为truecookie: {maxAge: 24 * 3600},//一天rolling: false, //在每次请求时进行设置cookie,将重置cookie过期时间store:new mongoStore({//将session数据存储到mongo数据库中url:'mongodb://localhost:27017/college', //数据库地址touchAfter:24*3600  //多长时间往数据库中更新存储一次,除了在会话数据上更改了某些数据除外})
    }));
    

    ④ 配置好后,在用户登录的时候,进行存储session;在一些需要登录才能访问的界面,需要取session,如果没有,则跳转到登录界面;用户退出,需要销毁session

    1. 获取session

      req.session
      

      配置好中间件后,就可以在服务器端,使用req.session获取session了

    2. 设置session

      req.session.token = 'itlike'
      ```![在这里插入图片描述](https://img-blog.csdnimg.cn/20201203124557129.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0thaVNhckg=,size_16,color_FFFFFF,t_70)
      
    3. 销毁session
      ① 方法一:将cookie的时间设置为0,只有cookie中携带的信息通过客户端请求传到服务器,有对应的session接收session才起作用。
      cookie没了session自然也就将不起作用。
      ② 方法二req.session.destory()

      req.session.destory((err)=>{console.log(err);
      })
      

Node.js:使用session存储用户信息相关推荐

  1. session存储用户信息的实现

    1.与其他用户状态保存方案比较 一般开发中用户状态使用session或者cookie,两种方式各种利弊. Session:在InProc模式下容易丢失,并且引起并发问题.如果使用SQLServer或者 ...

  2. Node.js 使用 JWT 进行用户认证

    代码地址如下: http://www.demodashi.com/demo/13847.html 运行环境 该项目基于 node(v7.8.0版本以上) 和 mongodb 数据库,因此电脑上需要安装 ...

  3. Node.js毕业设计——基于Node.js+JavaScript+MongoDB的供求信息网站设计与实现(毕业论文+程序源码)——供求信息网站

    基于Node.js+JavaScript+MongoDB的供求信息网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Node.js+JavaScript+MongoDB的供求信息网站设计 ...

  4. 使用ASP.NET 2.0 Profile存储用户信息

    概要:许多ASP.NET应用程序需要跨访问的用户属性跟踪功能,在ASP.NET1.1中,我们只能人工实现这一功能.但如今,使用 ASP.NET 2.0的Profile对象,这个过程变得异常简单.Ste ...

  5. 微信授权登录及存储用户信息(fastadmin开发项目)

    最近做了一个微信投票系统,这是第一次开发微信项目,所以特此记录一下 微信投票系统,最优先想到的就是授权登录,以及获取用户信息 1.首先需要申请微信公众号(此次使用的是服务号) 2.在微信公众平台基本配 ...

  6. Node.js 爬虫爬取电影信息

    Node.js 爬虫爬取电影信息 本文地址:https://blog.csdn.net/weixin_45580251/article/details/107669713 爬取的是1905电影网的信息 ...

  7. node.js 组件_使用Node.js和TransloadIt构建用户头像组件

    node.js 组件 在本系列的第一部分中,我们介绍了TransloadIt -一种文件处理服务,专门处理图像,视频和音频. 如果您还没有阅读它,我建议您立即阅读,因为它涵盖了很多背景概念,您需要阅读 ...

  8. 使用Node.js和TransloadIt构建用户头像组件

    在本系列的第一部分中,我们介绍了TransloadIt -一种文件处理服务,专门处理图像,视频和音频. 如果您还没有阅读它,我建议您立即阅读,因为它涵盖了很多背景概念,您需要阅读这些概念才能继续阅读本 ...

  9. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计

    转载需经本人同意且标注本文原始地址:https://zhaomenghuan.github.io/blog/nodejs-eggjs-usersytem.html 前言 近来公司需要构建一套 EMM( ...

  10. SpringBoot+JWT实现登陆token验证并存储用户信息

    基于Token的JWT认证 JWT:Json web token 是为了在网络应用环境间传递声明而执行的一种基于JSON传输格式的开放标准,可实现无状态.分布式的Web应用授权. 缺点:用户主动注销, ...

最新文章

  1. Arduino可穿戴教程之第一个程序——选择端口(三)
  2. sql server2005 通用分页方法
  3. Linux下的基本指令
  4. svn迁移,备份,重装系统后恢复数据 收藏
  5. 『Balancing Act 树的重心』
  6. 信息学奥赛一本通C++语言——1017: 浮点型数据类型存储空间大小
  7. 用计算机进行实时自动采集,计算机的五大主要用途
  8. PHP多次调用Mysql存储过程报错解决办法
  9. 给Intel AX200装上个Killer 1650X驱动
  10. 智能陈桥输入法软件测试,智能陈桥拼音输入法
  11. 【机器学习】左逆、右逆、伪逆和广义逆的概念理解
  12. uniapp打开外部链接
  13. 【HDU4622】Reincarnation(后缀自动机)
  14. android系统 通知管理,告别打扰 Android系统的通知管理
  15. 6、Spring事务配置上篇
  16. xmind可以画流程图吗_怎样用XMind方便地制作流程图
  17. 少儿编程Scratch学习教程5--基本操作(二)动画例子
  18. 工具型产品如何建立自己的商业化模式?
  19. MySQL(17) 通过Docker搭建主从同步
  20. 幂级数展开求积分_[干货]---如何利用留数定理计算积分

热门文章

  1. 24. flock() 函数
  2. matlab 切比雪夫逼近,切比雪夫等波纹逼近.PDF
  3. 模式匹配和正则表达式_python
  4. Java中的指针---Unsafe应用解析
  5. select机制的原理
  6. 2017.10.7 QBXT 模拟赛
  7. 2016-11-17(2)(Unity相关)---脚本基础
  8. 面试题38 数字在排序数组中出现的次数
  9. 1.2 控制器 view 的创建和加载
  10. Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解