2010-12-21 11 views

Antwort

2

Diese Frage wurde 1000x online gestellt. Der beste Weg, um nicht-persistente Cookies Timeout bei geöffnetem Browser zu behandeln, ist ein Schlüsselwert für das Timeout hinzuzufügen. Der folgende Code wird für die Anmeldung eines Benutzer-ID-Schlüsselwerts und die Verschlüsselung (nicht im Lieferumfang enthalten) für die Browserkompatibilität verwendet. Ich verwende keine Formularauthentifizierung.

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); 

Bei der Überprüfung der Cookie Schlüsselwert Verwendung:

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 
} 

I Kompatibilitätsprobleme mit Formularauthentifizierung und Google Chrome gefunden haben. Dies ist nicht wirklich in Bezug auf meine Frage

1

Werfen Sie einen Blick auf die Variable ASP.NET Session. Dies wird abhängig von Ihrem Browser beibehalten und kann so eingestellt werden, dass es "cookielos" oder mit einem harten Timeout ist.

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

+0

auf Browser verloren. Stellen Sie sich vor, Session wäre deaktiviert und ich wollte immer noch ein HTTP-Cookie erstellen, das verschwindet, wenn der Browser geschlossen wird/nicht auf die Festplatte geschrieben wird usw. Ich denke, einige der anderen Antworten sind auf der richtigen Spur. – MatthewMartin

6
cookie.Expires = DateTime.MinValue; 

dieses Cookie abläuft, sobald der Browser geschlossen wird.

7

Cookies, für die kein expliziter Ablauf festgelegt wurde, werden automatisch gelöscht, sobald die Browsersitzung beendet ist.

Jetzt bedeutet "Browsing-Sitzung" verschiedene Dinge zu verschiedenen Browsern. Bei einigen Browsern ist jede Instanz des Browsers geschlossen. Für einige bedeutet es nur, dass die relevanten Registerkarten oder der ursprüngliche Browser geschlossen ist.

In Ihren Tests stellen Sie sicher, dass Sie jede Instanz des Browsers schließen, bevor Sie erneut öffnen, um nach dem Cookie zu suchen. Wenn Sie weiterhin Probleme haben, geben Sie den Namen und die Version des Browsers an.

4

Wenn Sie die Cookie.Expires-Eigenschaft nicht festlegen, wird der Cookie am Ende der Browsersitzung ablaufen.

2

Cookie nicht in der Nähe auf Browser zerstören, wennTaken from here

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

Cookies schließen, wenn

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

Nicht ganz zutreffend, wieder browserbasiert. Wünschte, die Browser würden sich treffen und "wenn eine Browsersitzung endet" zustimmen. – GoldBishop

Verwandte Themen