docs: function (options) {
      options = options||{};
      // 如果没有设置key则使用SEESIONID作为key
      if (!options.key) options.key = 'SESSIONID';
  
      // 获取koasession要求的store格式
      if(typeof options.storeConfig==='object') options.store = store(options.storeConfig);
  
      const koaSessionMiddleware = koaSession(options);
  
      return async function (ctx, next) {
          // 设置session对象
          let _session = store.createSessionObject();
          // 监听session的设置与获取
          Object.defineProperty(ctx, 'session', {
              get: function () {
                  return _session;
              },
              set: function (newVal) {
                  _session = store.createSessionObject(newVal, _session);
              }
          });
          // 从cookie中获取sessionId
          const sessionId = ctx.cookies.get(options.key);
          let id;// 新的session分配
          // 如果cookie不存在则创建并跳转，但是并未入库！！！
          // 执行koasession
          await koaSessionMiddleware(ctx, function () {
              let sid;
              // 如果cookie不存在的时候自动生成sid
              if (!sessionId) {
                  id = uid.sync(24);
                  ctx.session = {};
              } else {
                  id = sessionId;
              }
              sid = options.key + ':' + id;
              ctx.session.sid = sid;
              return next();
          });
          // 如果cookie不存在的时候自动创建cookie，以覆盖koa-session-minimal生成的cookie
          const cookie = getCookie(options, ctx);
          // 重新将生成的sid设置到cookie中
          ctx.cookies.set(options.key, id, cookie);
      };
  }