koa-session获取session为undefined

问题

使用koa-session时,获取session显示的是undefined

原因

session是依赖于cookie的,前后端跨域时,前后端需要配置允许携带cookie

解决方案

  • 前端
    由于前端使用的axios,所以需要在axios中配置withCredentials: true
    例子:

    1
    2
    3
    4
    5
    const $axios = axios.create({
    baseURL: "http://localhost:3030/", // 发送请求的前置的url
    timeout: 10000, // 请求超时的时间
    withCredentials: true // 允许携带cookie
    });
  • 后端
    后端用的是koa2-cor包进行的跨域,所以需要配置credentials: true
    例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    const cors = require('koa2-cors');
    app.keys = ['some secret hurr'];
    const sessionConfig = {
    key: 'koa:sess', //cookie key (default is koa:sess)
    maxAge: 86400000, // cookie的过期时间 maxAge in ms (default is 1 days)
    overwrite: true, //是否可以overwrite (默认default true)
    httpOnly: true, //cookie是否只有服务器端可以访问 httpOnly or not (default true)
    signed: true, //签名默认true
    rolling: false, //在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
    renew: false, //(boolean) renew session when session is nearly expired,
    };
    app.use(session(sessionConfig, app));