partyzanx
@partyzanx

Как удалить сессию при закрытии сайта?

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

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", () => {
 
});


... в я.браузере, файерфоксе срабатывает когда страница загрузилась, а не когда страницу закрывают.
  • Вопрос задан
  • 241 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы