下载
npm install express-session --save //用于在express中操作session
npm install connect-mongo --save // 用于将session写入数据库(session持久化)
引入
// 进入express-session模块
const session = require('express-session')
// 引入connect-mongo模块
const MongoStore = require("connect-mongo")(session);
编写全局配置对象
app.use(session({
name:'userid' // 设置cookie的name,默认值是connect.sid
secret:'dataKey', // 参与加密的字符串(又称为签名)
saveuninitialized:false, // 是否在存储内容之前创建会话
resave:true,//是否在每次请求时,强制重新保存session,即使他们没有变化
store:new MongoStore({
url:'mongodb://localhost:27017/sessions_container',
touchAfter:24*3600 //修改频率(//在24小时之内更新一次)
}),
cookie:{
httpOnly:true, // 开启后前端无法通过JS操作cookie
maxAge:1000*30 // 设置cookie的过期时间
}
}))
向session中添加一个xxx,值为yyy
req.session.xxx = yyy
获取session上的xxx属性
const {xxx} = req.session
整个过程是:
1.客户端第一次发起请求,服务器开启一个session专门用于存储这次请求的一些信息。
2.根据配置对象的信息,服务器决定是否进行:session持久化等其他操作。
2.与此同时服务器创建了一个cookie,它的key我们可以自己指定,但是它的value一定是上一步session的唯一标识。
3.服务器将我们指定好的内容添加进session对象,例如:req.session.xxxx = yyy。
4.等请求再次过来时,客户端的请求中包含着之前“种”的cookie。
5.服务器检查携带过来的cookie是否有效,决定是否去读取对应session中的信息。