Session

579 阅读2分钟
这里说的session 不是浏览器里面的sessionStorage ,而是后端的一种,存在于服务器上的一种缓存方式`
  • session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而session保存在服务器上
  1. session的工作流程

    • 当浏览器第一次访问服务器,并发送第一次的请求的时候,服务器会创建一个session对象,键值对的方式
    • 然后会将key (cookie)返回给浏览器(客户端)。
    • 当浏览器下次访问的时候,携带key(cookie)传给服务器
    • 服务器会根据key(cookie)找到对象的session(value)
    • 客户的信息都保存在session
  2. 安装

    npm install koa-session --save 
    
  3. 使用

    //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())