Ich entwickle eine Webanwendung, die einen internen SSO-Server für die Authentifizierung verwendet. Ich habe einen Link auf meiner Homepage zu einer Seite namens Logout.aspx. Logout.aspx löscht das Cookie für die Formularauthentifizierung, alle Sitzungsdaten und führt dann eine Umleitung zu der LoginUrl durch, die in der Formularauthentifizierungskonfiguration angegeben ist, die derzeit auf einer Seite namens Login.aspx festgelegt ist.Wie erhalten Sie die Referrer-URL in ASP.NET, wenn mehrere Weiterleitungen vorhanden sind?
Wenn jedoch Login.aspx geladen wird, wird versucht, den Benutzer implizit gegen den SSO-Server mit dem zuvor ausgestellten SSO-Authentifizierungsticket erneut zu authentifizieren. Wenn dieses Ticket noch vorhanden ist, wird der vorherige Benutzer erneut angemeldet und an die Homepage zurückgesendet. Ich möchte beim Laden der Anmeldeseite feststellen, ob die Anfrage über die Abmeldeseite erfolgt ist. Die UrlReferrer-Eigenschaft der Anforderung verweist weiterhin auf Home.aspx, vermutlich weil dies die letzte URL war, die der Client angefordert hat.
Zur Zeit habe ich eine Problemumgehung, bei der ich eine Anfrage an die Anfrage von der Abmeldeseite anfügt, die die Anmeldeseite anweist, keine implizite Anmeldung durchzuführen und stattdessen den Benutzer zur Eingabe von Anmeldeinformationen auffordert. Wie kann ich programmgesteuert feststellen, ob die Anfrage über eine Umleitung von der Abmeldeseite kam?
bearbeiten 29.04.2009:
das Gespräch mit jellomonkey Folgen, soll ich darauf hinweisen, dass die Interaktion zwischen dem SSO-Server und der lokalen Formularauthentifizierung der konsumiere Website des nicht direkt relevant ist Problem zur Hand. kurz und bündig ausgedrückt, mein Problem ist:
- Benutzer HTML klickt Hyperlink von Home.aspx, die sie
- Page_Load-Ereignishandler Logout.aspx nimmt von Logout.aspx zu Formularauthentifizierungsticket und Sitzungsdaten und leitet den Benutzer löscht Login.aspx
- Das Page_Load-Ereignis von Login.aspx überprüft die UrlReferrer-Eigenschaft des Request-Objekts, um festzustellen, ob die Anforderung über die Seite Logout kam. Bei Anforderungen, die über eine Umleitung von Logout.aspx stammen, ist die UrlReferrer-Eigenschaft des Request-Objekts jedoch Home.aspx.
Warum ist das? Warum ist der UrlReferrer Home.aspx und nicht Logout.aspx?
Wie werden Sie umleiten, verwenden Sie Response.Redirect oder Server.Transfer? – wweicker
Seanix - Ich benutze Response.Redirect – pmarflee
Die UrlReferrer ist die Client-Maschinen vorherige Anfrage, so dass die verschiedenen Verhaltensweisen von Resp Onse.Redirect und Server.Transfer hätte ich vermutet, dass Server.Transfer wie beschrieben fehlschlagen würde und dass Response.Redirect funktionieren würde. Entschuldigung, ich kann die ursprüngliche Frage nicht beantworten, aber ich könnte alternative Lösungen anbieten ... – wweicker