2016-09-21 15 views
0

ノードバックエンドでexpress/express-session/passportを使用していますが、これは私のログアウトコードです。私のWebクライアントは正しくログアウトしますが、モバイルクライアントはありません

// 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で動作するイオン(モバイルアプリケーション)を持っています。モバイルアプリで[ログアウト]ボタンをクリックすると、いつものように/ログアウトをリクエストします。私は私のモバイルクライアント上でログアウトボタンをクリックすると

$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

クッキーを削除しようとしましたが、削除しようとしたときにどのようなエラーが発生しましたか? – VtoCorleone

+0

@VtoCorleoneどうすればいいですか? webviewにクッキーを削除するよう伝えるバックエンドの義務でなければならず、 'req.logout()'はそれに必要なヘッダを設定すると信じています。私のWebアプリケーションには 'myapp.dev/logout'と入力するコードはありません。正しく動作します。 – Aris

答えて

0

サーバーがSet-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で常にヌルです。 APKがアプリケーションキャッシュのような別の場所にクッキーをキャッシュしていると思いますか? – Aris

関連する問題