Session
翻译:回话、握手
回话对象:客户端 和 服务端
Session是存储在服务器(数据库、内存、Storage)上的一个对象(键值对)。
Cookie
翻译:小甜饼、曲奇饼
Cookie是一个键值对。是服务端安插在浏览器的后门
session()
定义:
- 是一个中间件函数。
- 用于创建一个session对象。
- session对象用于管理HTTP状态。
- session数据在cookie中只存储session ID。
- session数据存储在服务器端。
- Cookie存储在浏览器端。
Cookie什么时候存在浏览器端?
- 用户第一次发起请求
- 当服务区第一次做出响应的时候,服务器通过session
语法
session({options})
session({选项对象})
session({
secret : ' string ',//秘钥
cookie:{ //安插在用户浏览器中的后门(键值对)
path:' / ',
httpOnly:true,
secure:false,
maxAge:null //使用毫秒数设置cookie的有效期 5分钟或1天
},
resave:false,
saveUninitialized:true
})
语法
1.安装
npm i express-session
2.引入
const session = require('express-session')
app.use()
1.什么是session
答:session指HTTP客户端和服务端的会话。(浏览器 <==> 服务器)
2.Session的用途
答:①HTTP是无状态的 ②Session用于处理HTTP通信的状态问题
3.Session和cookie的区别
答:①Session存储服务器的内存里;cookie存储在客户端的浏览器里
②浏览器端的cookie是通过服务端session创建的
4.在服务端创建session的语法
答:
app.use(session({
secret:"任意字符串",//secret:用于创建sessionID(秘钥),sessionID存储在浏览器
cookie:{
maxAge:毫秒数, //maxAge:决定了cookie的有效期
}
resave:布尔值, //当session发送变化时是否需要重新存储。通常false
saveUninitialized:布尔值 //如果未完成初始化是否创建session,建议true
}))
5.express-session模块如何创建cookie?
答:app.use(session({})) 创建一个session对象,cookie是通过session对象创建的
6.记住一句话
答:① 在服务端创建一个session,就在浏览器端植入了一个cookie
② 浏览器端的cookie只存储sessionID,不存储如何其他数据。
③ sessionID是通过secret
属性生成一个加密的随机的唯一的ID
④ 只要cookie植入完成,浏览器端发起的如何请求都会自动携带sessionID
7.所有的中间件函数都必须要执行next()函数:跳转到下一个中间件函数。
8.req.session的用途是什么?
答:req.session用于向服务端的Session对象添加额外信息。