Удалить куки при нажатии кнопки выхода - PullRequest
9 голосов
/ 16 августа 2011

Я создаю файл cookie, используя приведенный ниже код. Как прочитать значение txtusername на другой странице и как удалить файл cookie, когда я нажимаю кнопку «Выйти» (код для выхода).Я новичок в программировании, пожалуйста, помогите.

  string cookiestr;
            HttpCookie ck;
            tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now,
            DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");
            cookiestr = FormsAuthentication.Encrypt(tkt);

            ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
            if (chkPersistCookie.Checked)
                ck.Expires = tkt.Expiration;
            ck.Path = FormsAuthentication.FormsCookiePath;
            Response.Cookies.Add(ck);

Ответы [ 3 ]

12 голосов
/ 16 августа 2011

Никогда не храните пароль как 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
    }
6 голосов
/ 16 августа 2011

Вы не можете напрямую удалить cookie, вы должны установить срок его действия до текущей даты:

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

Подробнее об этом можно прочитать здесь .

Кроме того, я действительно призываю вас не писать свою собственную безопасность, а читать о членство asp.net .Более безопасный и простой в использовании.Как я вижу много недостатков в вашей модели безопасности.Хранение пароля в виде обычного текста в файле cookie действительно очень плохо.

РЕДАКТИРОВАТЬ: Поскольку вы сейчас изменили свой код, вы должны сделать это, чтобы удалить cookie:

if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
    HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}
0 голосов
/ 24 сентября 2018

К вашему сведению, это не помогло мне, используя Chrome 69 с включенной функцией Continue where you left off. Аналогичная проблема с Firefox. Отключение этой функции помогло мне.

См.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...