请问,在auth.js的中间件中,获取的ctx.session是空对象,这是怎么回事?

来源:9-9 优化用户登录验证插件

Allen_Liu986

2020-10-15

请问,在auth.js的中间件中,获取的ctx.session是空对象,并没有像视频中那样获取到值,这是怎么回事?

module.exports = options => {
  return async (ctx, next) => {
    const url = ctx.request.url;
    const user = ctx.username;
    // console.log("user1==>", JSON.stringify(ctx.session)); 此处为空对象??
    if(!user && !options.exclude.includes(ctx.request.url.split('?')[0])) {
      ctx.body = {
        status: 1001,
        errMsg: '用户未登录'
      }
    }else {
      await next();
    }
  }
}
写回答

2回答

Allen_Liu986

提问者

2020-10-16

egg项目启动地址为本机ip地址:192.168.*.***
前端项目自带的启动地址为:localhost 或者 127.0.0.1都不行。只要将地址也设为ip启动即可。
同时,在config.default.js设置config.cors配置项,允许跨域即可

config.cors = {
credentials: true, // 支持cookie跨域
origin: 'http://192.168.*.***:8080', // 这里的地址要配置具体的客户端地址,* 会有问题,另外:如果是App这种,内部使用的file协议,那么file请求接口是不会有跨域问题的
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH'
};


0
0

夏小宅

2020-10-15

登录、注册时候没有添加session吧;上面的代码是第九章完成后的代码,"9-9 优化用户登录验证插件" 这个小节里面用的还是session,9-10之后才替换成redis,可以jwtSign这个方法里面,例如:ctx.session[username]=username

0
2
夏小宅
回复
Allen_Liu986
可以检查下session的过期时间maxAge,将其设置的大一点
2020-10-15
共2条回复

React+React Hook+Egg造轮子 全栈开发旅游电商应用

造好轮子+前后端复杂业务处理,解锁前端高手必备技能。

479 学习 · 137 问题

查看课程