cookie是存储在浏览器上的,session是保存在服务器上的
session只要关闭浏览器就会销毁
session的原理:
客户端第一次请求服务端时,服务端会创建一个session对象,生成一个类似于key:value的键值对,然后将key(cookie)返回到浏览器,浏览器下次访问时携带key(cookie),找到对应的session对象,客户的信息都存在session里
在express中使用express-session中间件
npm install express-session --save
const session = require('express-session')
//配置中间件
app.use(session({
secret: 'lalala', //一个String类型的字符串,作为服务器生成session的签名
name:'session_id', //设置cookie保存在本地的名字,默认为connect_sid
resave: false, //强制保存session 即使它没有变换,默认为true,建议设为false
saveUninitialized: true,//强制初始化session 如果没有设置session也会自动返回一个connect_id,建议设为true
cookie: { secure: false}, //secure设置为true表示只有在https协议下才可以访问cookie,cookie的设置和cookie-parser的选项基本相同,也可以设置过期时间maxAge等
rolling:true //表示用户最后一次操作后开始计算cookie过期时间 ,即每次请求时重新计算cookie过期时间
}))
设置和获取session
req.session.userInfo = 'jiang'
session 销毁
req.session.destroy((err)=>{
if(err){
console.log(err)
}else{
res.redirect('/login')
}
})
网友评论