Как создать непреодолимый (в памяти) http cookie в C#?
-
12-10-2019 - |
Вопрос
Я хочу, чтобы мой файл 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