这里说的session 不是浏览器里面的sessionStorage ,而是后端的一种,存在于服务器上的一种缓存方式`
session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而session保存在服务器上
-
session的工作流程- 当浏览器第一次访问服务器,并发送第一次的请求的时候,服务器会创建一个
session对象,键值对的方式 - 然后会将
key (cookie)返回给浏览器(客户端)。 - 当浏览器下次访问的时候,携带
key(cookie)传给服务器 - 服务器会根据
key(cookie)找到对象的session(value) - 客户的信息都保存在
session中
- 当浏览器第一次访问服务器,并发送第一次的请求的时候,服务器会创建一个
-
安装
npm install koa-session --save -
使用
//1. 安装 koa-sesssion npm install koa-session --save //2. 引入koa-session const Koa = require("koa"); const app = new Koa(); const router = require("koa-router")(); const session = require("koa-session"); //引入 //3 常量设置,配置一些,信息,跟配置cookies的数据 基本上是差不多的 const CONFIG = { key: "koa:sess", //固定配置 不需要改动,也是类似一个签名 maxAge: 60 * 1000, //过期时间,必须设置的,session在这个时间段内有效,过了这个时间段,就会清除 autoCommit: true, //无需更改, overwrite: true, //默认 就行 覆盖操作 httpOnly: true, //是否只有服务器端可以使用session, false是两者都可以, true是只能是服务器可以 signed: true,//无需修改, 默认签名 rolling: false, //因为后端存的是一个base64编码 所以这里就是问你是不是需要每次访问的时候,都去更新 一次session的时间 renew: false //当session 过期的时候,是不是需要重新生成一个新的,并且时间重置 } //启动session 中间件 传入配置信息 app.use(session(CONFIG, app)); router.post("/login", async (ctx) => { //设置session 这个session 是无法在cookie里面看到的 ctx.session.username = "张三"; //key 是 username value是 张三 }) router.get("/login", async (ctx) => { //获取session 这个session 是无法在cookie里面看到的 let username = ctx.session.username; ctx.body = username; }) app.listen(3000); app.use(router.routes()); app.use(router.allowedMethods())