请问,在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' };
00 -
夏小宅
2020-10-15
登录、注册时候没有添加session吧;上面的代码是第九章完成后的代码,"9-9 优化用户登录验证插件" 这个小节里面用的还是session,9-10之后才替换成redis,可以jwtSign这个方法里面,例如:ctx.session[username]=username
022020-10-15