При входе на сайт пользователь ставит галочку удалять сессию при закрытии сайта или нет.
Если удалять, то у меня срабатывает следующий код на клиенте
window.addEventListener("unload", () => {
let xhr = new XMLHttpRequest();
xhr.open('GET', '/user/sessionDestroy');
xhr.send();
});
Этот код запускает гет запрос
router.get('/sessionDestroy', async (req, res) => {
try {
if (req.session && req.session.user) {
const candidate = await User.findOne({email: req.session.user.email})
if (candidate.remainInSystem) {
// console.log('remainInSystem');
return
}
}
console.log('deleting session');
req.session.destroy();
res.status(200).send('ok');
} catch (error) {
console.log(error);
}
})
Проблема в том, что корректно эта схема работает только в Опере, а в других браузерах сессия удаляется при перезагрузке страницы. Как лучше реализовать систему "удаления сессии если пользователь так захотел"?
Самое странное, что событие...
window.addEventListener("unload", () => {
});
... в я.браузере, файерфоксе срабатывает когда страница загрузилась, а не когда страницу закрывают.