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