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