session的简介

session是另一中记录客户状态的机制,与cookie不同的是 session数据保存在服务器中,而不是保存在客户端浏览器中,。

session的用途

  • session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存在服务器端。

  • 当用户访问站点的其他页面时,可以根据用户的登录状态做出相应的提示,身份验证拦截。

  • session可以和数据库结合做持久化操作,当服务器挂掉时,不会导致用户信息丢失。

session的工作流程

  1. 当客户端第一次请求服务器时,服务器会为每个客户端创建一个独享的session对象,用于跟踪用户的状态。
  2. 同时,为session对象分配一个唯一标识sessionId。
  3. 为了管理session对象,以sessionId为键,以session对象为值,封装成Map集合。
  4. 响应客户端时,将sessionId以cookie的形式发送给客户端,存放在客户端浏览器的缓存中。
  5. 当客户端再次请求服务器时,会将sessionId以cookie请求头的方式发送给服务器,服务器得到sessionId后,从Map集合中,得到session对象,从而跟踪状态。

session的特点

  • 同源的页面之间可以共享session数据
  • 浏览器关闭时,服务器中保存的session对象也会跟着销毁
  • 在第一次调用request.getSession()方法时,创建出session,
  • 超时:session超过一定时间(默认30分钟,这个时间可设置)没有人使用,则认为超时,干掉这个session。
  • 自杀:也可以明确的调用session的invalidate()方法,手动的杀死session。
  • 意外身亡:或者当服务器非正常关闭时,服务器中的session跟着消亡。

session的基本使用

1、安装express-sesssion

npm install express-session --save-prod

2、导入

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

3、配置中间件

// 配置中间件
app.use(session({secret: 'keyboard cat',resave: false,saveUninitialized: true,// cookie: { secure: true } // https 协议的请求才会传入 cookie}))

4、设置session数据

app.get('/login', (req, res) => {req.session.userinfo = 'zhangsan';res.send('登录成功');
})

5、获取session数据

app.get('/', (req, res) => {if (req.session.userinfo) {res.send('欢迎回来' + req.session.userinfo)} else {res.send('未登录')}
})

session的配置参数

参数 说明
secret 字符串,作为服务端生成session的签名
name 返回客户端的cookie的名称,默认为content.sid,也可以自己设置
resave 强制重新保存session,即使它没有变化,默认为true,建议设置成false
saveUninitialized 强制将未初始化的session存储,默认是true,建议设置成true
cookie 关于cookie配置信息
rolling 在每次请求时强行设置cookie,这将重置cookie过期时间,默认值为false

session的简介相关推荐

  1. 巨杉内核笔记(一)| SequoiaDB 会话(session)简介

    SequoiaDB 会话(session)简介 会话(Session)的基本概念 容易弄混淆的两个概念是会话与连接. 通俗来讲,会话(Session) 是通信双方从开始通信到通信结束期间的一个上下文( ...

  2. ASP.NET中Session模型简介

    阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了解ASP.NET We ...

  3. http 三种认证方式 Basic Session Token 简介

    目录 1. 概述 2. HTTP Basic 认证 3. Session 认证 4. Token 认证 1. 概述 本文简介 HTTP Basic,Session,Token 三种认证方法. Basi ...

  4. ASP.NET C# Session的简介及用法

    Session 一.概述 Session用于存储特定的用户会话所需的信息 . Session对象的引入是为了弥补HTTP协议的不足,HTTP协议是一种无状态的协议. Session中文是"会 ...

  5. Session 详解

    作者: heallven   www.ASPCool.com 时间:2004-8-28 阅读本文章之前的准备    阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程 ...

  6. ASP.NET Session 详解

    本文仅代表作者个人观点,正确与否请读者自行研究! 阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程  ...

  7. 转贴一篇很不错的有关ASP.NET Session的分析文章

    ASP.NET Session详解 阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/A ...

  8. web.config中的session配置详解

    打开某个应用程序的配置文件Web.config后,我们会发现以下这段: < sessionState mode="InProc" stateConnectionString= ...

  9. [ASP.NET] Session 详解

    阅读本文章之前的准备    阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题.       懂得ASP/ASP.NET编程    了解ASP/ASP.NET ...

最新文章

  1. Python切片(入门7)
  2. 结课作业:云计算在物联网中的应用发展
  3. rms 公式 有效值_怎样求信号中的RMS值?
  4. (转)Android SharedPreferences的使用
  5. 代码签名证书Authenticode签名伪造——PE文件的签名伪造与签名验证劫持
  6. C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码
  7. HTML Img(Type)
  8. Java中使用try-with-resource优雅的关闭io流
  9. 组合,Mixin,类、类对象、实例对象
  10. 为什么觉得今年工作特别难找?
  11. 并发编程学习之AQS抽象队列同步器
  12. 1.4_12 Axure RP 9 for mac 高保真原型图 - 案例11 【动态面板-滚动条1】
  13. 德马克机械波中shift over to right的意思
  14. c语言编程一个登陆界面设计,怎么用C语言编写个登陆界面?
  15. msm8x16 耳机阻抗检测
  16. 《程序员修炼之道》读书笔记
  17. C语言编程编制职工档案管理程序,c语言人事档案管理程序
  18. Linux中使用者身份的切换su和sudo的用法
  19. 普通本科,一年经验外包直接跳槽阿里?论我是怎么快速晋升的
  20. 为你的SQLite开发选择一款比较好的工具

热门文章

  1. JAVA基本数据类型所占字节数是多少?
  2. jdbc url写法(集群)
  3. docker 基础操作
  4. [bzoj1059] [ZJOI2007]矩阵游戏
  5. android动画效果 --- 设置activity 跳转动画
  6. 以二进制的形式保存在数据库中
  7. JavaScript 弹出窗口总结
  8. 不用GAN、VAE,谷歌发明视频生成的扩散模型,实现新SOTA
  9. 【含内推码】字节跳动智能创作2022秋招提前批全面开启!
  10. 点这里,关注计算机视觉技术最前沿~