Wie kann ich mit forms authentication timeout Ausnahmen in ASP.NET?
Wenn die Sitzung abgelaufen ist und der Benutzer klickt auf einen link auf eine andere Web Form -, die asp.net Authentifizierung automatisch leiten den Benutzer auf die login-Seite.
Jedoch gibt es Fälle, wenn der Nutzer nicht auf links klicken, um andere webforms. Zum Beispiel: Bearbeiten-link in gridviews, wenn mit AutoCompleteExtender mit Textboxen und die Anwendung versucht, die Informationen erhalten, und grundsätzlich in jedem Fall, wenn ein postback erfolgt ist und der Termin wird nicht automatisch bearbeitet asp.net die Authentifizierung.
Was ist der beste Weg, um mit diesen Ausnahmen?
UPDATE: habe ich gerade geändert die Frage, title: forms-Authentifizierung, timeout, statt der ersten session-timeout. Vielen Dank, dass mir bewusst, dieser Unterschied.
UPDATE: ich habe soeben eine neue Frage, die mit dem spezifischen problem, das ich mich vor: Wie behandeln Ausnahme aufgrund der abgelaufenen authentifizierungstickets mithilfe von UpdatePanel?. Überraschend, ich habe nicht viel Informationen über Sie. Ich würde wirklich zu schätzen Ihre Hilfe.
- Es ist nicht so, dass der Antrag "nicht behandelt, durch die asp.net Authentifizierung". Es ist. Vielmehr ist die Ajax XmlHttpRequest gibt die nicht-XML-response an den browser. Das problem ist dann eher an der browser-Seite und dort finden Sie die Antwort für Ihr Problem.
- Was wollen Sie passieren, wenn die session abgelaufen ist und der Benutzer klickt und Bearbeiten-link in ein GridView?
- Hi @James. Wenn die Sitzung abgelaufen ist, will ich den user auf die login-Seite. Daher, wenn der Bearbeiten-link geklickt wird (oder jede andere postback erzeugt wird), die ich behandeln soll, die die Ausnahme generiert, und nehmen Sie die Benutzer auf die login-Seite. Bisher ist die einzige Lösung, die ich haben gedacht worden, um hinzufügen try-catch zu jedem methos Umgang postbacks, aber ich bin sicher, es muss bessere Wege, dies zu tun
- einfach nur neugierig, warum Sie nicht akzeptierte dies Monate später?
- schauen Sie sich die Kommentare unten Ihre Antwort. Es beschreibt, was die situation ist. Ich bin immer noch mit dem gleichen problem.
- siehe meine Antwort unten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist der Grund, warum viele Systeme schließen Timer auf der Seite zu geben Ungefähre timeout-Zeiten. Es ist schwer, mit interaktiven Seiten. Sie wirklich brauchen, um Haken ajax-Funktionen und betrachten die Rückkehr status-code, das ist ein bisschen schwierig.
Eine alternative ist die Verwendung von code, der auf der Grundlage der folgenden, die läuft früh in der Lebenszyklus der Seite, und führen Sie eine ajax-redirect auf eine login-Seite. Ansonsten werden Sie stecken versucht, abfangen der return-code vom ajax und in asp.net wo der ajax ist fertig 'für Sie' (also nicht mehr die manuelle Methode wie jQuery), verlieren Sie diese Leichtigkeit der Erkennung.
http://www.eggheadcafe.com/tutorials/aspnet/7262426f-3c65-4c90-b49c-106470f1d22a/build-an-aspnet-session-timeout-redirect-control.aspx
für einen schnellen hack können Sie versuchen, es direkt in pre_init
http://forums.asp.net/t/1193501.aspx
Bearbeiten
was gewollt ist, sind für forms-auth-timeouts, keine session-timeouts. Forms-auth timeouts arbeiten nach einem anderen Maßstab als session-timeouts. Session-timeouts-update mit jeder Anfrage. Forms-auth-tickets sind nicht tatsächlich aktualisiert, bis die Hälfte der Zeit geht. Also, wenn Sie timeouts auf eine Stunde und schicken eine Anfrage 25 Minuten in es, zurücksetzen der Sitzung um eine Stunde timeout, kann der forms-auth-ticket nicht berührt und läuft in 35 Minuten! Um dies zu umgehen, synchronisieren Sie den session-timeout und der forms-auth-ticket. Auf diese Weise können Sie immer noch einfach überprüfen, session timeouts. Wenn Sie nicht wie dies dann immer noch tun, die unten und die Synchronisierung der timeouts und dann analysieren Sie die auth-ticket und Lesen Sie die timeout. Sie können tun, dass mit FormsAuthentication.Entschlüsseln - siehe:
Form Lesen Authentifizierungs-cookie von asp.net code hinter
Beachten Sie, dass dieser code erfordert, dass bei der Anmeldung gibt man einige session-Wert - in diesem Fall seiner "UniqueUserId". Auch die login-Seite folgenden Pfad eintragen.
Wenn Sie die Formularauthentifizierung verwenden, wird der Benutzer auf die Anmeldeseite umgeleitet, wenn das formularauthentifizierungsticket abläuft, das ist nicht das gleiche wie die Sitzung abläuft.
Könntest du überlegen, die Erhöhung der Forms Authentication timeout, falls zutreffend. Sogar soweit mit einem persistenten cookie. Aber wenn es nicht ablaufen, es gibt keine echte alternative zum umleiten auf die login-Seite - alles andere wäre unsicher.
Eine Möglichkeit für den Umgang mit Session-timeouts Session als cache - und weiterhin alles wichtige zu einem backing store wie eine Datenbank. Dann prüfen Sie, bevor Sie Zugriff auf alles, was in der Sitzung, und aktualisieren Sie wenn nötig:
Wenn Sie eine master-Seite oder eine Basis-Seite, ich möchte hinzufügen, ein wenig Logik, um eines der Ereignisse in der Lebenszyklus der Seite zu überprüfen, ob die session neu ist: