In ASP.NET ist eine Sitzung für den Browser. Aber wie kann ich eine Sitzung für einen Tab erstellen?Sitzung für eine Registerkarte in ASP.NET
Antwort
Verwenden Sie die folgenden Schritte aus:
<configuration>
<system.web>
<sessionState cookieless="true"
regenerateExpiredSessionId="true" />
</system.web>
</configuration>
Und ein citation from MSDN:
ASP.NET hält cookieless Sitzung Zustand, indem sie automatisch eine eindeutige Sitzungs-ID in die URL der Seite eingefügt wird. Zum Beispiel hat die folgende URL von ASP.NET geändert worden die eindeutigen Sitzungs-ID lit3py55t21z5v55vlm25s55 enthalten:
http://www.example.com/(S(lit3py55t21z5v55vlm25s55))/orderform.aspx
Wenn ASP.NET sendet eine Seite an den Browser , ändert es keine Links in der Seite, die einen anwendungsbezogenen Pfad verwenden, indem Sie einen Sitzungs-ID-Wert in die Links einbetten. (Links mit absoluten Pfaden werden nicht geändert.) Der Sitzungsstatus wird beibehalten, solange der Benutzer auf diese Weise auf geänderte Links klickt. Wenn jedoch der Client eine URL umschreibt, die von der -Anwendung bereitgestellt wird, kann ASP.NET die Sitzungs-ID nicht auflösen und die Anforderung einer vorhandenen -Sitzung zuordnen. In diesem Fall wird eine neue Sitzung für die Anforderung gestartet.
Alles, was Sie brauchen, um eine neue Sitzung für neue Registerkarte zu öffnen, ist eine URL ohne Sitzungskennung zu öffnen.
EDIT:
Und wie andere Benutzer erwähnt, sollten Sie auf dieses "Kung-Fu" aufpassen. Wenn Sie vertrauliche Informationen in einer Sitzung speichern, geben Sie bitte secure your authentification cookies ein.
EDIT2: Und beachten Sie, dass wenn Sie Sitzungsschlüssel in URL verwenden, die Benutzer es kopieren und an einige Freunde senden können. Und dieser Benutzer und seine Freunde werden die einzelne Sitzung teilen (das wird ein großartiges Feature! :)). Um dies zu vermeiden, können Sie Folgendes tun:
1. Fügen Sie in der onSessionStart-Methode eine Zuordnung zum Benutzer (Benutzerprofil, Speichern in der Datenbank) hinzu und prüfen Sie sie bei BeginRequest.
2. Überprüfen Sie den Referrer und erstellen Sie eine neue Sitzung (Weiterleitung an die sessionlose URL), wenn der Referrer leer ist oder nicht der aktuellen Domäne entspricht (beachten Sie jedoch, dass der Referrer manuell gesetzt werden kann).
3. Erneutes Generieren der Sitzungs-ID und Verknüpfung es mit dem Benutzernamen und ip/mac (xor oder so ähnlich). Und überprüfen Sie dies auf der Bühne, wenn die Sitzung abgeholt wird.
4. Etwas anderes, um diesen Sitzungsschlüssel nur für den aktuellen Benutzer gültig zu machen.
Der Sitzungscookie wird in einem flüchtigen Speicher gehalten, der für diese Instanz des Browsers zugänglich ist. Sie würden einen Browser benötigen, der das Konzept unterstützt, nach dem Sie suchen, kein solcher Browser existiert meines Wissens.
In ASP.NET können Sie eine Sitzung ohne Verwendung eines Sitzungscookies führen, es ist wirklich hässlich und ich würde es nicht empfehlen, aber es könnte eine Möglichkeit für Sie sein, Ihr Ziel zu erreichen.
@Downvoter: Bitte erklären? – AnthonyWJones
- 1. PHP - Sitzung pro Registerkarte
- 2. IIS 5-Sitzung und Asp.Net Sitzung
- 3. Beste Nhibernate Sitzung für asp.net
- 4. Sitzung in asp.net C#
- 5. Sitzung in asp.net überprüfen?
- 6. Invalidieren Sie die Java-Sitzung für neue Registerkarte
- 7. Sitzung Timeout Warnung in ASP.NET
- 8. Sitzung endet nicht in ASP.NET
- 9. IIS Session Timeout vs ASP.NET Sitzung Timeout
- 10. asp.net - Sitzung - mehrere Browser-Registerkarten - verschiedene Sitzungen?
- 11. ASP.NET Registerkarte Steuerelement mit benutzerdefinierten Registerkarte Formen
- 12. Sitzung wird in ASP.NET null.
- 13. Asp.Net MVC und Sitzung
- 14. ASP.NET Sitzung und LINQ
- 15. ASP.NET Sitzung Mischen
- 16. ASP.Net Sitzung Timeout funktioniert nicht
- 17. ASP.NET-Site Sitzung Timeout Problem
- 18. ASP.Net Sitzung Wert nicht ändern
- 19. Kann Sitzung nicht in ASP.Net vNext Projekt
- 20. Erstellen einer Sitzung in ASP.NET MVC
- 21. Abrufen der Sitzung ordnungsgemäß in ASP.NET
- 22. wie ASP.NET-Sitzung in WCF verwenden?
- 23. Asp.net AjaxToolkit TabContainter Aktive Registerkarte geändert - vorherige Registerkarte
- 24. Wie erstellt man eine Verknüpfung für eine Registerkarte in Console2?
- 25. REST WCF-Dienst und Sitzung in ASP.NET
- 26. Asp.Net Sitzung ist Null in Aschx-Datei
- 27. Wie kann ich eine abgelaufene ASP.NET-Sitzung am besten erkennen?
- 28. Kann eine html5 lokale App eine asp.net Sitzung haben? (Lokaler Webapp für iPhone)
- 29. Verwenden der ASP.NET-Sitzung für die Lebensdauerverwaltung (Unity)
- 30. Fett Text für eine Registerkarte Steuerelement
Die Verwendung von Sitzungen ohne Cookies führt zu einem wirklich schrecklichen Sicherheitsproblem, ich glaube nicht, dass es jemals benutzt werden sollte. – meandmycode
Nicht sehr einfach, viel schwieriger .. cookieless Sitzungen beschädigen die URLs der Website, und schlimmere Kunden nicht erkennen, dass, wenn sie die URL kopieren und einfügen .. sie verlosen ihre Sitzung .. etwas, das nicht passiert mit normalen Sitzungen .. da Benutzer ihre Cookie-Werte nicht ignorieren können. Die wahrscheinlichste Ursache für das Stehlen von Sitzungen ist über XSS auf der Website. – meandmycode
Ist es schwer, in der onSessionStart-Methode eine Verbindung zum Benutzer hinzuzufügen? Ist es schwierig, den Referrer zu überprüfen und eine neue Sitzung zu erstellen, wenn der Referrer leer ist oder nicht mit der aktuellen Domain übereinstimmt? Ist es schwer, die Generation der Sitzungs-ID neu zu schreiben und sie dem Benutzernamen und der IP-Adresse zuzuordnen? Es gibt viele Möglichkeiten, Fälle zu beheben, wenn Benutzer kopieren und den Link jemandem geben. Wir können immer einen großen glänzenden Knopf hinzufügen "aktuelle URL in den Puffer kopieren". Über XSS scheint es mir, dass Sie ein wenig darüber wissen. Wenn Sie ein XSS-Loch haben, können ALLE Cookies gestohlen werden. Sie sollten viel mehr auf Auth Cookie achten. – zihotki