session数据存储在服务器
使用express-session
并配置中间件
session 不需要手动发送到前端 会自动发送前端 并添加到cookie上
同时后端刷新后需要重新设置
const app =require("express")()
const session = require('express-session')
// 中间件
app.use(session({
secret: 'keyboard cat',
resave: false,
name: 'name',
saveUninitialized: true
cookie: {
secure: false,
maxAge: 60000
}
}))
app.get("/",function(req,res){
req.session.name = "www"
res.send("999")
})
app.get("/xuxin",function(req,res){
console.log(req.session.name);
res.send("222")
})
// 设置session存在
request.session.name = value
// 获取session存在
request.session.name
- secret: 一个String类型的字符串,作为服务器端生成session的签名。
- name: 返回客户端的key的名称,默认为connect.sid,也可以自己设置。
- resave:(是否允许)当客户端并行发送多个请求时,其中一个请求在另一个请求结束时对session进行修改覆盖并保存。
- saveUninitialized: 初始化session时是否保存到存储。默认为true,
- rolling: 向服务发送请求后,是否重置cookie时间,建议true
- cookie:设置返回到前端key的属性,默认值为{ path: ‘/’, httpOnly: true, secure: false, maxAge: null }。
cookie
secure 安全-确保浏览器只通过HTTPS发送cookie。
httpOnly 确保cookie仅通过HTTP(S)发送,而不是通过Dlient JavaScript发送,这有助于防止CRO-站点脚本攻击。
domain 指示cookie的域;使用它与请求URL的服务器的域进行比较。如果它们匹配,那么下一步检查path属性。
Path 指示cookie的路径;使用它与请求路径进行比较。如果这个和域匹配,那么发送请求中的cookie。
expires 过期-用于设置持久性cookie的过期日期。