重定向即使有任何错误也不起作用

时间:2019-01-02 02:14:33

标签: node.js

我想在我的应用程序中设置注销,但是由于知道它是SPA,所以我被困在将用户重定向到登录表单中。

在我的server.js中,

app.get('/logout',function(request, res){
    request.session.destroy();
    res.redirect('/');
    console.log("done");
});

app.get('/',function(request,response){
   response.sendFile("CERIGame/index.html",{ root: __dirname} );
});

只是登录表单在开头是可见的。

和http请求,我从上面称为“ / logout”

logOut: function(){
    return $http
    .get('/logout')
    .then(function(response){   
        logged = false;
        return "logging out";
    });
},

此http请求在工厂中定义。 重定向到“ /”不起作用,并且即使console.log打印完成消息,也不会引发任何异常。

2 个答案:

答案 0 :(得分:0)

我将尽一切可能对此进行解释,您的重定向工作正常。问题在于您发出请求的方式,当您重定向到'/'的{​​{1}}时,执行以下操作:

server.js

到目前为止,一切都很好,未加载表单的原因是因为消耗app.get('/', function (request, response) { response.sendFile("CERIGame/index.html", { root: __dirname }); }); 的人正在返回server.js

"logging out"

如果流程正确执行,通常会对其进行概括,那么错误的是实现向logOut: function() { return $http .get('/logout') .then(function (response) { // Your form at this point is in response logged = false; return "logging out"; }); }, 发出请求的实现,因为此时表单已丢失到最终目的地。

答案 1 :(得分:0)

好像您使用Node.Js作为后端,AngularJs作为前端。

后端代码为

app.get('/logout',function(request, res){
  request.session.destroy();
  res.statusCode = 200;
  res.send({success:true});
});

前端代码为

logOut: function(){
    return $http
    .get('/logout')
    .then(function(response){   
        //Here you can redirect in different ways like 
        window.location.href = '/';
        // or 
        /* $state.go('home'); //In case if you are using anuglar-ui router */
    });
},