Hallo,
derzeit habe ich ein seltsames Problem, dessen Ursache ich schon lokalisieren konnte, aber es leider nicht geschafft habe bis jetzt zu lösen. Dazu gesagt sei, dass ich noch sehr neu auf dem Gebiet der Webentwicklung bin.
Es geht darum, dass wir ein WebInterface mit ner Menge .jsp Seiten und Servlets haben. Dabei arbeiten wir mit einem internal Frame, welches den Inhalt des jeweiligen ausgesuchten Menü's beinhaltet (Zum Verständnis habe ich mal 2 Screenshots dran gehangen).
Das Problem ist jetzt, dass sobald die Session abgelaufen ist, eigentlich wieder zur Login-Seite gesprungen werden soll, damit sich der Nutzer neu anmelden kann. Befindet man sich aber bspw. im Hauptmenü und die Session läuft in der Zeit ab und man wählt im Anschluss einen link im Hauptmenü, so wird die Anmeldeseite im internal frame angezeigt (also es verschachtelt sich alles... in bild 2 zu sehen).
Das liegt daran, dass in den jeweiligen links im Hauptmenü als target das iframe angegeben ist:
Dieses target möchte ich ja nun entweder auf _self haben (wenn die session abgelaufen ist) oder auf iframe_window (sonst...).
Nun habe ich schon ein paar Versuche hinter mir (alle erfolglos
), und würde mich freuen wenn mir jemand einen Denkanstoß geben könnte... Bisher habe ich folgendes ausprobiert:
- Mittels jsp die Angelegenheit Serverseitig regeln: z.B.
aber dabei wird ja nur zum Zeitpunkt in der die jsp aufgerufen wird dieses target gesetzt... was leider zu früh ist. (Also Benutzer ruft die Seite auf --> session ist zu dem Zeitpunkt noch gültig (sonst wäre es nicht möglich gewesen die Seite aufzurufen) --> Benutzer klickt 10 Minuten später auf einen link --> wird daraufhin auf login umgeleitet bleibt aber alles im iframe...)
- Mit Hilfe von Javascript überprüfen ob die Session noch gültig ist... da wollte ich dann die Session in eine Funktion mit übergeben... und dann einfach mittels parent.top.location="/loc" ... bsp:
Doch leider musste ich feststellen, dass dies nicht möglich ist... Da hab ich noch an cookies gedacht... die benötigten infos auf dem Client speichern und dort überprüfen lassen bei der Anfrage... doch leider weiß ich nicht ob das Sinn macht oder eher weniger. Weil müsste ja dann auch dort überprüfen ob die idle time überschritten wurde usw. (Was wäre wenn die Systemuhr vom client schon unterschiedlich läuft?)
Ich würde mich über jeden Hinweis sehr freuen.
Viele Grüße,
Marco
derzeit habe ich ein seltsames Problem, dessen Ursache ich schon lokalisieren konnte, aber es leider nicht geschafft habe bis jetzt zu lösen. Dazu gesagt sei, dass ich noch sehr neu auf dem Gebiet der Webentwicklung bin.
Es geht darum, dass wir ein WebInterface mit ner Menge .jsp Seiten und Servlets haben. Dabei arbeiten wir mit einem internal Frame, welches den Inhalt des jeweiligen ausgesuchten Menü's beinhaltet (Zum Verständnis habe ich mal 2 Screenshots dran gehangen).
Das Problem ist jetzt, dass sobald die Session abgelaufen ist, eigentlich wieder zur Login-Seite gesprungen werden soll, damit sich der Nutzer neu anmelden kann. Befindet man sich aber bspw. im Hauptmenü und die Session läuft in der Zeit ab und man wählt im Anschluss einen link im Hauptmenü, so wird die Anmeldeseite im internal frame angezeigt (also es verschachtelt sich alles... in bild 2 zu sehen).
Das liegt daran, dass in den jeweiligen links im Hauptmenü als target das iframe angegeben ist:
Java:
<a href="/bspLink" target="iframe_window" title=""
class="irgendwas" id="eineID" onclick="irgendeineJavaScriptFunction()">Tralala</a>
Dieses target möchte ich ja nun entweder auf _self haben (wenn die session abgelaufen ist) oder auf iframe_window (sonst...).
Nun habe ich schon ein paar Versuche hinter mir (alle erfolglos
- Mittels jsp die Angelegenheit Serverseitig regeln: z.B.
Java:
<% if(request.getSession().getAttribute("verified" != null) { %> // session noch gültig
// setze target auf iframe_window
<% } else { %>
// setze target auf _self
}
- Mit Hilfe von Javascript überprüfen ob die Session noch gültig ist... da wollte ich dann die Session in eine Funktion mit übergeben... und dann einfach mittels parent.top.location="/loc" ... bsp:
Java:
<a href="/bspLink" target="iframe_window" title=""
class="irgendwas" id="eineID" onclick="checkSession(<%=request.getSession()%>)">Tralala</a>
Doch leider musste ich feststellen, dass dies nicht möglich ist... Da hab ich noch an cookies gedacht... die benötigten infos auf dem Client speichern und dort überprüfen lassen bei der Anfrage... doch leider weiß ich nicht ob das Sinn macht oder eher weniger. Weil müsste ja dann auch dort überprüfen ob die idle time überschritten wurde usw. (Was wäre wenn die Systemuhr vom client schon unterschiedlich läuft?)
Ich würde mich über jeden Hinweis sehr freuen.
Viele Grüße,
Marco