Как удалить куки на экране ASP.NET сайт



на моем сайте, когда пользователь нажимает на кнопку "Выход", выход из системы.в aspx-страница с кодом Session.Clear().



In ASP.NET/C#, это очищает все куки? Или есть какой-либо другой код, который должен быть добавлен, чтобы удалить все файлы cookie моего сайта?

724   10  

10 ответов:

попробуйте что-то вроде этого:

if (Request.Cookies["userId"] != null)
{
    Response.Cookies["userId"].Expires = DateTime.Now.AddDays(-1);   
}

но это также имеет смысл использовать

Session.Abandon();

кроме того, во многих сценариях.

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

if (Request.Cookies["UserSettings"] != null)
{
    HttpCookie myCookie = new HttpCookie("UserSettings");
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}

на момент Session.Clear():

  • все пары ключ-значение из Session коллекция удаляются. Session_End событие не произойдет.

если вы используете этот метод во время выхода из системы, вы также должны использовать Session.Abandon метод Session_End событие:

  • Cookie с идентификатором сеанса (если ваше приложение использует файлы cookie для сеанса ID store, который по умолчанию) удаляется

вот что я использую:

    private void ExpireAllCookies()
    {
        if (HttpContext.Current != null)
        {
            int cookieCount = HttpContext.Current.Request.Cookies.Count;
            for (var i = 0; i < cookieCount; i++)
            {
                var cookie = HttpContext.Current.Request.Cookies[i];
                if (cookie != null)
                {
                    var expiredCookie = new HttpCookie(cookie.Name) {
                        Expires = DateTime.Now.AddDays(-1),
                        Domain = cookie.Domain
                    };
                    HttpContext.Current.Response.Cookies.Add(expiredCookie); // overwrite it
                }
            }

            // clear cookies server side
            HttpContext.Current.Request.Cookies.Clear();
        }
    }

к сожалению, для меня установка "Expires" не всегда работала. Печенье не пострадало.

этот код работал для меня:

HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

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

Я просто хочу отметить, что идентификатор сеанса cookie не удаляется при использовании сеанса.Откажитесь, как говорили другие.

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

иногда, вы не можете повторно использовать идентификатор сессии. Если вы это сделаете и если вы понимаете последствия не повторного использования идентификатора сеанса, используйте в следующем примере кода для отказа от сеанса и очистки сессионной cookie:

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

этот пример кода очищает состояние сеанса от сервера и устанавливает файл cookie состояния сеанса равен нулю. Этот null эффективно очищает куки из браузера.

http://support.microsoft.com/kb/899918

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

вот пример:

HttpCookie aCookie;
    string cookieName;
    int limit = Request.Cookies.Count;
    for (int i=0; i<limit; i++)
    {
        cookieName = Request.Cookies[i].Name;
        aCookie = new HttpCookie(cookieName);
        aCookie.Expires = DateTime.Now.AddDays(-1); // make it expire yesterday
        Response.Cookies.Add(aCookie); // overwrite it
    }

принимая заголовок вопроса OP как удаление всех файлов cookie - "удалить файлы cookie на веб-сайте"

я наткнулся на код от Дэйва Домагала в интернете где-то. Я отредактировал Dave, чтобы разрешить куки Google Analytics, которые также прошли через все куки, найденные на веб-сайте, и удалили их все. (С точки зрения разработчика-обновление нового кода на существующий сайт-это приятное прикосновение, чтобы избежать проблем с пользователями, возвращающимися на сайт).

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

код:

int limit = Request.Cookies.Count; //Get the number of cookies and 
                                   //use that as the limit.
HttpCookie aCookie;   //Instantiate a cookie placeholder
string cookieName;   

//Loop through the cookies
for(int i = 0; i < limit; i++)
{
 cookieName = Request.Cookies[i].Name;    //get the name of the current cookie
 aCookie = new HttpCookie(cookieName);    //create a new cookie with the same
                                          // name as the one you're deleting
 aCookie.Value = "";    //set a blank value to the cookie 
 aCookie.Expires = DateTime.Now.AddDays(-1);    //Setting the expiration date
                                                //in the past deletes the cookie

 Response.Cookies.Add(aCookie);    //Set the cookie to delete it.
}

Дополнение: Если Вы Используете Google Analytics

вышеупомянутый цикл / delete удалит все файлы cookie для сайта, поэтому, если вы используете Google Analytics - вероятно, было бы полезно сохранить файл cookie _ _ utmz, поскольку он отслеживает, откуда пришел посетитель, какая поисковая система была использована, какая ссылка была нажата, какое ключевое слово было использовано, а где они были в мире, когда ваш сайт был доступен.

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

... 
aCookie = new HttpCookie(cookieName);    
if (aCookie.Name != "__utmz")
{
    aCookie.Value = "";    //set a blank value to the cookie 
    aCookie.Expires = DateTime.Now.AddDays(-1);   

    HttpContext.Current.Response.Cookies.Add(aCookie);    
}

хотя это старый поток, я думал, если кто-то все еще ищет решение в будущем.

HttpCookie mycookie = new HttpCookie("aa");
mycookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(mycookie1);

вот что сделал трюк для меня.

сейчас 2018 год, так что ASP.NET ядро, есть прямо вперед встроенная функция. Чтобы удалить куки, попробуйте этот код:

if(Request.Cookies["aa"] != null)
{
    Response.Cookies.Delete("aa");
}
return View();

ответ.Cookies ["UserSettings"].Истекает = Дата И Время.Сейчас.AddDays(-1)

Comments

    Ничего не найдено.