Как создать непреодолимый (в памяти) http cookie в C#?

StackOverflow https://stackoverflow.com/questions/4500591

Вопрос

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

HttpCookie cookie = new HttpCookie("mycookie", "abc");
cookie.HttpOnly = true; //Seems to only affect script access
cookie.Secure = true; //Seems to affect only https transport

Какое свойство или метод мне не хватает для достижения файла cookie в памяти?

Это было полезно?

Решение

Этот вопрос был опубликован в Интернете 1000 раз. Лучший способ справиться с непостоянным тайм-аутом файлов cookie с открытым браузером-добавить значение ключа для тайм-аута. Приведенный ниже код используется для входа в значение ключа идентификатора пользователя и безопасность шифрования (не включенная) для совместимости браузера. Я не использую аутентификацию форм.

HttpCookie cookie = new HttpCookie(name);
cookie.Values["key1"] = value;
cookie.Values["key2"] = DateTime.Now.AddMinutes(70).ToString(); 
                             //timeout 70 minutes with browser open
cookie.Expires = DateTime.MinValue;
cookie.Domain = ConfigurationManager.AppSettings["website_domain"];
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);

При проверке значения ключа cookie используйте значение:

try
{

DateTime dateExpireDateTime;
dateExpireDateTime = DateTime.Parse(HttpContext.Current.Request.Cookies[name]["key2"]);

if (DateTime.Now > dateExpireDateTime)
{
//cookie key value timeout code
}
else
{
//reset cookie
}

catch
{
//clear cookie and redirect to log in page
}

Я нашел проблемы совместимости с использованием аутентификации форм и Google Chrome.

Другие советы

Файлы cookie без истечения срока действия явно установленный автоматически исчезнут после окончания сеанса просмотра.

Теперь «сеанс просмотра» означает разные вещи для разных браузеров. Для некоторых браузеров это означает, что каждый экземпляр браузера закрыт. Для некоторых это просто означает, что соответствующие вкладки или оригинальный браузер закрыты.

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

cookie.Expires = DateTime.MinValue;

Срок действия этого печенья истекает, как только браузер будет закрыт.

Если вы не установите свойство cookie.expires, истекает истечение срока действия cookie -файла в конце сеанса браузера.

Cookie не будет уничтожен в браузере, если Взят отсюда

 HttpCookie cookie = new HttpCookie(name);
 cookie.Value = value;
 cookie.Expires = Convert.ToDateTime(“12/12/2008″);  //*difference is here*//
 Response.Cookies.Add(cookie);}

Cookie будет потеряно в браузере, если

     HttpCookie cookie = new HttpCookie(name);
     cookie.Value = value;
     Response.Cookies.Add(cookie);}

Взгляните на asp.net Session переменная. Это будет сохраняться в зависимости от вашего браузера и может быть установлено «cookieless» или с трудным тайм -аутом.

http://msdn.microsoft.com/en-us/library/h6bb9cz9%28vs.71%29.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top