2016-09-21 41 views
0

我在節點後端使用express/express-session/passport,這是我的註銷碼。我的網絡客戶端正常註銷,但移動客戶端沒有登錄

// GET /logout 
exports.logout = (req, res) => { 
    req.logout(); 

    if (req.body.type === "mobile") { 
    return res.status(200).json({success: true}); 
    } 

    res.redirect('/'); 
}; 

此網頁應用程序在http://myapp.dev:3000上運行。只要我在Web應用程序上並單擊註銷按鈕,我就可以登錄/註銷,而不會出現任何問題。

我也有一個運行在192.168.2.30:8100上的Ionic(移動應用程序)。當我點擊我的移動應用程序中的註銷按鈕時,我會像往常一樣向/註銷請求。

$stateProvider.state("auth.signout", { 
    url: "/signout", 
    controller: "SignoutController", 
    resolve: { 
     redirect: function($http, $state, Config) { 

      $http.get(`${Config.url("/logout")}`, { 
       type: "mobile" 
      }, { 
       withCredentials: true 
      }).then(res => { 
       $state.go('auth.signin'); 
      }).catch(res => { 
       console.log(res); 
       alert("Could not log out"); 
      }); 
     } 
    } 
}); 

當我點擊我的移動客戶端上的退出按鈕,我得到的JSON回來,但我無法從我的移動客戶端刪除Cookie,因此不斷重新連接。

任何想法如何防止這種情況?

+0

您嘗試刪除您的cookie以及嘗試刪除它時出現了哪些錯誤? – VtoCorleone

+0

@VtoCorleone我該怎麼做?它應該是後端的責任,告訴webview刪除cookies,我相信'req.logout()'設置必要的標題。除了輸入'myapp.dev/logout'外,我的web應用程序沒有代碼,並且工作正常。 – Aris

回答

0

你能展示服務器如何做Set-Cookie嗎?

確保您的Cookie在客戶端上被刪除時存在什麼問題?

$http.get(`${Config.url("/logout")}`, { 
    type: "mobile" 
}, { 
    withCredentials: true 
}).then(res => { 
    document.cookie = 'cookieName=;Path=/;Expires=Thu, 01 Jan 1970 00:00:01 GMT;' 
    $state.go('auth.signin'); 
}).catch(res => { 
    console.log(res); 
    alert("Could not log out"); 
}); 
+0

它基本上是與護照模塊一起的快速會話。它看起來像這樣:https://github.com/passport/express-4.x-local-example/blob/master/server.js document.cookie在Android/Cordova上始終爲null。我猜APK APK緩存在其他地方像應用程序緩存的cookie? – Aris