Frage

Ich erstellte einen HTTPCookie, sodass nur den Namen und den Wert eingestellt wird, und nicht das Vermögen von Abläuft, und fügen Sie sie an die Antwort hinzu. Einfach genug. Der Cookie wird wie erwartet erstellt (aber nicht beharrlich). Das Problem ist, wenn sich die Sitzung aus irgendeinem Grund ändert (wie die Website wurde wieder aufgebaut, oder ich blieb meine App beim Debuggen wieder auf. Dann bleibt der Keks in der Nähe. Ich möchte, dass der Cookie nur für die ursprüngliche Sitzung gültig ist, auf der es erstellt wurde.

Nach MSDN heißt es: "Wenn Sie kein Ablauflimit für den Cookie angeben, wird der Cookie nicht an den Client-Computer angemeldet und läuft ab, wenn die Benutzersitzung abläuft."

Ich glaube, ich weiß nicht genau, was "Session läuft abläuft. Ich fand, dass der Cookie nach 20 min gelöscht wird, wenn die Sitzung abläuft. Sollte der Cookie jedoch gelöscht werden, wenn die erstellte Sitzung aus verschiedenen Gründen nicht mehr existiert? Das einzige Mal, dass ich gesehen habe, dass der Cookie gelöscht wurde, ist, wenn der Benutzer alle Browserfenster schließt und einen neuen öffnet.

Wenn dies alles true ist, muss ich möglicherweise die ursprüngliche Sitzungs-ID ("ASP.NET_SESSIONID") im Cookie speichern, und prüfen Sie ihn dann gegen die aktuelle Sitzungs-ID, wenn sie unterschiedlich sind, und löschen Sie den Cookie oder erstellen Sie das Cookie ein neuer.

Hier ist der Code (der einzige Unterschied zwischen meinem Cookie und dem in den MSDN-Beispielen ist, dass ich mehrere Werte im Cookie speichern):

generasacodicetagpre.

War es hilfreich?

Lösung

Das einzige Mal, dass ich das Cookie gesehen habe gelöscht ist, wenn der Benutzer alle schließt Browserfenster und öffnet eine neue.

Und genau das bedeutet MSDN, wenn es heißt, der Cookie wird gelöscht, wenn die Sitzung abläuft. Leider glaube ich, dass dies sowieso nicht über den Browsern konsistant ist, also ist es für niemanden nützlich.

Sie sollten immer ein Ablaufdatum auf Cookies einstellen.

Wenn dies alles trifft, muss ich vielleicht tun Speichern Sie die ursprüngliche Sitzungs-ID ("ASP.NET_SESSIONID") im Cookie, Dann überprüfen Sie es gegen den Strom Sitzungs-ID, wenn sie anders sind, dann Löschen Sie den Cookie oder erstellen Sie einen neuen.

Ich hasse es, es zu sagen, aber das wird auch nicht helfen. Das .NET Framework hat gerne Sitzungs-IDs, sodass Sie nicht garantieren können, dass es anders ist.

schlechte Nachrichten aus dem Weg, würde ich Ihnen beraten, das, was Sie von einem architektonischen Standpunkt zu tun, zu überdenken.

Neustart der App ist etwas, das vollständig auf dem Server passiert. Cookies sind etwas, das ganz auf dem Kunden passiert. Während der Client mit dem Server spricht, ist es rein eine Anforderungs- / Antwort-Beziehung, der Server kann Ereignisse nicht in Verbindung bringen, z. B. einen Anwendungs-Neustart an den Browser.

Wenn Sie einen Wert irgendwo speichern möchten, der nur für die Lebensdauer einer Serversitzung gültig ist, wecken Sie sie nicht in der Sitzung und nicht in einem Cookie?

Andere Tipps

Ich bin mir dessen bewusst, aber es ist nicht sicher genug, um unsere Kunden zu brauchen.Die Sitzung kann noch gefälscht oder injiziert werden.Siehe: http://msdn.microsoft.com/de-us/Magazin / cc163730.aspx # S9

sieht aus, als ob ich überlassen bin, um einen abgelaufenen sicheren Cookie-Treffer der Sitzung zu erstellen, und erfrischt das Ablaufdatum, wenn ich kann (dh wenn der Benutzer auf bestimmte Seiten zugreift).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top