Запрос все еще прикрепляет Cook ie после удаления как со стороны клиента, так и со стороны сервера - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь реализовать быстрое решение для входа в систему.

Логин:

  • Отправляет запрос POST с помощью AJAX (на стороне клиента)
  • NodeJS создает повара ie (На стороне сервера)
  • Перезагружает страницу с помощью javascript (на стороне клиента)

Работает нормально

Выход из системы:

  • Отправляет запрос POST с помощью AJAX (на стороне клиента)
  • NodeJS удаляет повар ie (на стороне сервера)
  • Я уверен, удалить повара ie на стороне клиента также с помощью JS (на стороне клиента)
  • Перезагружает страницу с помощью JS (на стороне клиента)
  • NodeJS еще как-то получает повар ie от req ???

Итак, когда я перезагружаю страницу после выхода из системы, я все еще вхожу в систему. Только после того, как я принудительно произнесу refre sh или нажму «Выход» еще один раз, я вижу, что я действительно вышел из системы.

Я перепробовал много разных подходов и методов загрузки страницы и удаления готового сообщения ie, но, похоже, ничего не работает.

Javascript:

$("#logout").click(function () {    
    var username = this.value;
    logout(username)
    var currentUrl = window.location.href; 
    window.location.assign(currentUrl); //I tried different methods of reloading the page
  });

// perform logout action
function logout(username) {
  $.ajax({
    type: "POST",
    url: "/logout",
    data: JSON.stringify({ username: username }),
    success: function () {
      //just in case remove the cookie
      removeLoginCookie()
    },
    error: function () {
      removeLoginCookie()
    },
    dataType: "json",
    contentType: "application/json"
  });
}

NodeJS:

app.post('/logout', (req, res) => {

  try{
    res.clearCookie('userlogin', { path: '/' })
    res.send({ "status": "Logged out successfully!" })

  }catch(e){
    res.sendStatus(500);
  }
});

1 Ответ

0 голосов
/ 05 февраля 2020

Я смог решить проблему, установив тайм-аут перед перезагрузкой страницы, но я не фанат этого решения, и мне все еще интересно, почему это происходит, и что может быть лучше сделай это.

$("#login").click(function () {    
  var username = this.value;
  logout(username)
  setTimeout(()=>{
    var currentUrl = window.location.href; 
    window.location.assign(currentUrl);
  }, 500)
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...