一、Session 简单介绍
session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而session 保存在服务器上。
二、Session 的工作流程
当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生成一个类似于 key,value 的键值对, 然后将 key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带 key(cookie),找到对应的 session(value)。 客户的信息都保存在 session 中
三、koa-session 的使用:
值得注意的是:相对于cookie,session是需要配置模块的
1、安装 express-session
npm install koa-session --save
2.引入 express-session
const session = require('koa-session');
3.设置官方文档提供的中间件
//配置session的中间件
app.keys = ['some secret hurr'];//cookie的签名
const CONFIG = {
key: 'koa:sess',
maxAge: 86400000,
autoCommit: true,//cookie的过期时间 需要设置
overwrite: true,//没有效果 默认
httpOnly: true,//true表示只有服务器端可以获取cookie
signed: true,//默认 签名
rolling: false,//在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
renew: true,//需要修改
};
app.use(session(CONFIG, app));
4、使用
设置值 ctx.session.username = "张三";
获取值 ctx.session.username
四、Cookie 和 Session 区别
1、cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
2、cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗
考虑到安全应当使用 session。
3、session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用 COOKIE。
4、单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。