Электронное печенье не работает, а только в производственной сборке
У нас есть электронное приложение, и система входа в систему нашего бэкэнда реализована с использованием файлов cookie.
Это квазар (vue.js)-электронное приложение, и все нормально в режиме разработки. Когда пользователь отправляет запрос на вход в систему, если его учетные данные верны, он возвращает cookie в заголовке "set-cookie". Он автоматически отправляется при каждом запросе с использованием axios, и при каждом новом запросе этот файл cookie обновляется, если пользователь не простаивал более 10 минут, в противном случае система выйдет из системы.
С другой стороны, если я создаю приложение, устанавливаю его, тогда весь заголовок "set-cookie" перестает работать! Я обнаружил, что у electronic есть API для обработки файлов 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 при первом входе в систему, но не при втором, пока не будет перезапущено все электронное приложение. Если я регистрирую процесс, кажется, что код все еще выполняется и сохраняет куки, но по следующему запросу не будет заголовка куки по какой-то причине.