EggJs使用中间件做拦截器出现问题

使用egg.js框架开发项目,使用中间件做拦截器

app/middleware/auth.js中做简单的判断session中user是否为空对象,登陆页面不做拦截


module.exports = options => {

    return function* auth(next) {

        yield next;

        if(this.path=='/'||this.path=='/login'){

            return;

        }

        if(!this.session.user.username){

            this.redirect('/', 'login.index');

        }


    };

};

然后再app/config/config.default.js中添加中间件的配置


config.middleware=[ 'auth' ];

在登陆的api中有一系列的判断,然后会返回相应的code 和message,


 this.ctx.body = {

                'code':code,

                'message':message

            };

但是添加了中间件后

前台点击登陆,登录api中也能打印出相应的code和message,但是前台发送登录请求的回调函数接收到的相应参数的body成了当前登陆页面

https://img3.mukewang.com/5c4969770001fa8308000023.jpg

沧海一幻觉
浏览 463回答 1
1回答

小唯快跑啊

这里逻辑没有问题啊,后端收到登录请求,进入auth中间件,发现session中没有user,请求重定向,你这里的重定向只是把登录这个请求的URL给重定向了,所以会返回html的内容.应该是验证登录在进需要登录页面的时候就进行重定向吧
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript