2016-09-21 3 views
0

Я использую экспресс/экспресс-сессию/паспорт на бэкэнде узла, и это мой код выхода.Мой веб-клиент выходит правильно, но мобильный клиент не

// 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. Я могу войти/выйти из системы без каких-либо проблем, пока я нахожусь в веб-приложении, и нажмите кнопку выхода из системы.

У меня также есть ионный (мобильное приложение), который работает на 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 назад, но я не могу удалить куки с моего мобильного клиента, так он держит переподключения.

Любая идея, как я могу предотвратить это?

+0

Что вы пытались удалить свой файл cookie и какие ошибки вы получаете, когда пытаетесь его удалить? – VtoCorleone

+0

@ VtoCorleone Что я должен делать? Обязанностью бэкэнда является указание веб-браузера удалить файлы cookie, и я полагаю, что 'req.logout()' устанавливает для этого необходимые заголовки. У моего веб-приложения нет кода, кроме меня, входящего в 'myapp.dev/logout', и он работает правильно. – 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 всегда 'null' на Android/Cordova. Я предполагаю, что APK кэширует cookie где-то еще, как кэш приложений? – Aris

Смежные вопросы