Электронное печенье не работает, а только в производственной сборке - PullRequest
0 голосов
/ 25 февраля 2019

У нас есть электронное приложение, и система входа в систему нашего бэкэнда реализована с использованием файлов cookie.

Это квазарное (vue.js) -электронное приложение, и все в порядке в режиме разработки.Когда пользователь отправляет запрос на вход в систему, если его учетные данные верны, он возвращает cookie в заголовке «set-cookie».Он автоматически отправляется при каждом запросе с использованием axios, и при каждом новом запросе этот файл cookie обновляется, если пользователь не находился в режиме ожидания более 10 минут, в противном случае система выйдет из системы.

С другой стороныЕсли я соберу приложение, установлю его, тогда весь заголовок "set-cookie" перестанет работать!Я обнаружил, что у electronic есть API для обработки файлов cookie, поэтому я реализовал обработку файлов cookie с этим, но если пользователь выходит из системы и хочет снова войти в систему, он не может, пока не перезапустит приложение, даже если я очищаюcookie-файлы с каждым выходом из системы.

Мои версии для построения электронов / электронов / восстановления электронов выглядят следующим образом

"electron": "^3.0.10",
"electron-builder": "^20.38.5",
"electron-rebuild": "^1.8.2",

, когда пользователь выходит из системы:

session.defaultSession.clearStorageData([
    { storages: ["cookies", "appcache", "filesystem"] },
    () => {}
  ]);

и использует axiosперехватчик Я устанавливаю куки с сеансом электронов api

axiosInstance.interceptors.response.use(
    response => {
      session.defaultSession.cookies.get({}, (error, cookies) => {
        if (error) console.log(error, cookies);
        const cookie = cookies.filter(
          cookie => cookie.domain === process.env.domain
        );
        if (!cookie.length) return response;
        const scheme = cookie[0].secure ? "https" : "http";
        const url = scheme + "://" + cookie[0].domain;
        const newCookie = {
          url: url,
          name: cookie[0].name,
          value: cookie[0].value,
          domain: cookie[0].domain,
          path: cookie[0].path,
          secure: cookie[0].secure,
          httpOnly: cookie[0].httpOnly,
          expirationDate: cookie[0].expirationDate
        };
        session.defaultSession.cookies.set(newCookie, error => {
          if (error) console.error(error);
        });
      });
      return response;
    },
    ...rest of the code removed

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

...