Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

asp.net: vorherige Seite auslesen

HADU / 1 Antworten / Baumansicht Nickles

Hi,
ich habe ein Problem mit dem Rücksprung von einer Login-Seite.
Ich arbeite mit "Forms authentication" - wenn ein Benutzer auf die Seiten springt, die in der web.config angegeben sind, dann wird er auf die Login-Seite umgeleitet. Am Ende der Login-Seite wird der Benutzer dann wieder auf die ursprünglich gewünschte Seite zurückgeleitet ( FormsAuthentication.RedirectFromLoginPage(customerId, RememberLogin.Checked)). Läuft wunderbar.
Wenn ein Benutzer direkt über den Link "Anmelden" im Menü auf die Login-Seite springt, dann gibt es keine Rücksprungadresse und der Benutzer wird auf die default.aspx im Root der Anwendung verwiesen. Das kann ich aber so nicht brauchen. Deswegen würde ich den Benutzer gerne auf die Seite umleiten, von der er hergekommen ist.
Ich habe folgenden Abfrage:
If Request.Params("ReturnUrl") Is Nothing Then
und würde dann gerne so weitermachen:
Response.Redirect(Request.UrlReferrer.ToString)
Dummerweise ist da aber nichts drin (nothing). Kennt jemand den Grund dafür, dass da nichts drin steht?
Bevor ich jetzt Session-Variablen im PageLoad von potentiellen Vorgänger-Seiten mit deren URL anlgege: gibt es eine andere Möglichkeit die vorhergehende Seite auszulesen? Auf JavaScript möchte ich aber gängzlich verzichten.

Gruß HADU

bei Antwort benachrichtigen
HADU Nachtrag zu: „asp.net: vorherige Seite auslesen“
Optionen

Hallo,

hab' die Lösung selber gefunden:
Bei mir ist "UrlReferrer" immer leer, weil ich die Seiten im Browser direkt aufgerufen habe, also die Adresse in der Adressleiste eingegeben habe und nicht über die Links im Menü gegangen bin. Die Menü-Links sind für die Produktivumgebung eingestellt. Relative Links sind hier leider nicht möglich, weil hier im Shop zwischen http und https Seiten hin- und hergesprungen wird.
Wenn man aber eine Seite direkt aufruft und nicht über einen Link darauf springt, dann bleibt "UrlReferrer" leer.
Dann habe ich in dem Zusammenhang noch gelesen, dass ich mich auch beim Aufruf über Links nicht darauf verlassen kann, dass in "UrlReferrer" überhautp etwas drinsteht - es gibt Tools, die das unterdrücken. Manche Browser liefern per default nichts mit.
Ich habe also auf den potentiellen Seiten, von denen man auf die Login-Seite springen kann,
folgendes eingetragen:
'Rücksprungadresse für die Login-Seite
If Session.Item("Back") Is Nothing Then
Session.Add("Back", Request.Url.ToString)
Else
Session.Item("Back") = Request.Url.ToString
End If

und auf der Login-Seite beim Rücksprung:

'auf die vorherige Seite umleiten!
If Request.Params("ReturnUrl") Is Nothing Then
If Session.Item("Back") Is Nothing Then
Response.Redirect("login.aspx")
Else
Response.Redirect(Session.Item("Back"))
End If
Else
FormsAuthentication.RedirectFromLoginPage(customerId, RememberLogin.Checked)
End If

Gruß HADU

bei Antwort benachrichtigen