Сессия потеряна при сохранении куки - PullRequest
5 голосов
/ 30 января 2012

При успешном входе в систему я хочу сохранить файл cookie, содержащий имя пользователя.

Файл cookie сохраняется правильно и правильно загружает имя пользователя, но теряет сеанс!

Код для получения имени пользователя:

if (Request.Cookies["userName"] != null)
{
  txtEmail.Text = Request.Cookies["username"].Value;
  chkRemember.Checked = true;
}

Код для сохранения имени пользователя:

HttpCookie aCookie = new HttpCookie("username");
aCookie.Value = txtEmail.Text;
aCookie.Expires = DateTime.Now.AddYears(5);
Response.Cookies.Add(aCookie);

Любая помощь будет принята с благодарностью, Спасибо

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Немного дикий выстрел, но вы переходите с https на http? Например. Форма входа - https, следующая страница - http

Если это так, большинство браузеров отключит сеансовые куки.

Спасибо, Фран

1 голос
/ 31 января 2012

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

Или вы очищаете свои куки, если пользователь не хочет, чтобы их запомнили?

Я недавно видел старый пример на MSDN, показывающий метод удаления, который уничтожит ваш сеанс ... прочитайте статью .

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

(очень) быстрый перевод на csharp кода статьи:

    for (int i = 0; i < limit; i++)
    {
        cookieName = Request.Cookies[i].Name;
        aCookie = new HttpCookie(cookieName);
        aCookie.Expires = DateTime.Now.AddDays(-1);
        Response.Cookies.Add(aCookie);
    }

Решение добавило проверку имени файла cookie.

    for (int i = 0; i < limit; i++)
    {
        cookieName = Request.Cookies[i].Name;
        if (cookieName == "username")
        {
            aCookie = new HttpCookie(cookieName);
            aCookie.Expires = DateTime.Now.AddDays(-1);
            Response.Cookies.Add(aCookie);
        }
    }

Также не забывайте, что вы можете использовать подключи в куки.

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