Member 8683058 Ответов: 2

Очистка файлов cookie при закрытии вкладки браузера


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

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

2 Ответов

Рейтинг:
2

JakirBB

Это можно сделать с помощью JQuery. Посмотри здесь


Рейтинг:
2

StianSandberg

Вы можете удалить файлы cookie с помощью javascript. И если вы прикрепите это к событию закрытия браузера, оно будет работать.

<body onunload="deleteAllCookies()">


function deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}


Это очистит все файлы cookie onUnload, но файлы cookie должны быть установлены только с помощью http. (почитайте про XSS и обеспечение печенье : Защита Ваших Файлов Cookie: Да[^])

И если ваши файлы cookie хорошо защищены, они не могут быть удалены с помощью javascript.

Решение состоит в том, чтобы создать функцию javascript, которая вызывает aspx-страницу, которая очищает сеанс и удаляет все файлы cookie.

window.onbeforeunload = function(){
   $.get('removeSession.aspx', function() {
      // all good
   });
}

В вашем removeSession.aspx вы можете делать свои вещи в page_load


protected void Page_Load(object sender, EventArgs e)
{
    Session.Abandon();
    foreach (string cookie in Request.Cookies)
    {
        Response.Cookies[cookie].Expires = DateTime.Now.AddDays(-1);
    }
}