Использование веб-маршрутизатора с express мешает выходу из системы? - PullRequest
0 голосов
/ 04 марта 2020

Мои настройки:

У меня есть реагирующий маршрутизатор для обработки изменений компонентов и express для запуска запросов на получение из моей базы данных.

Реакция на порт 3000

express на порте 5000.

реагирует на прокси-соединение с портом 5000 в setupProxy. Файл js находится в папке клиента, а в пакете Json - прокси инструкция.

setupProxy. js

const proxy = require("http-proxy-middleware");

module.exports = function(app) {
    app.use(proxy('/auth', { target: 'http://localhost:5000/' }));
};

Реакция пакета. json (частично)

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "proxy": "http://localhost:5000", // <--important detail here
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]

В express у меня есть настройки паспорта для входа в систему, и это работает! Ура! Я могу отправить jsons, который мне нужен, основываясь на моем первоначальном запросе ax ios на вход в систему.

Проблема

Это мои инструкции по выходу из системы express:

app.get("/logout", function(req, res) {
  req.logout();
  res.redirect("/");
});

для выхода из системы. Я использую dead simple href = "/ logout "код по умолчанию для этого в паспорте js. Для входа в систему я снова делаю href = "/ auth / google" довольно просто, и это работает. Выйти из системы не выходит из системы и не перенаправляет ее на дом, а вместо этого переходит в / выход из системы и остается там, оставив меня в системе и застрявшим.

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

1 Ответ

1 голос
/ 04 марта 2020

Таким образом, решение состоит в том, что я должен запустить запрос выборки, а не прямую ссылку. Я изменил свой href на функцию handleLogout onclick, как показано здесь:

const handleLogout = () => {
  axios.get("http://localhost:3000/logout").catch(err => {
    console.log(err);
  });
};

Надеюсь, это поможет будущим поколениям

...