Session abgelaufen und direkter Aufruf

Status
Nicht offen für weitere Antworten.

freez

Top Contributor
Hallo,

ich habe hier eine JSF/Facelets/Ajax4JSF Anwendung mit Datenbank im Hintergrund. Ich suche nach Best Practise Methoden, wie ich mit dem direkten Aufrufen von JSF Seiten und Session TimeOuts umgehen.

Viele von euch haben bestimmt schon Berührung mit den Themen gehabt:
1. Ein User klickt nach langer Inaktivität (> SessionTimout) auf einen Link, weil er nach dem Mittagessen weitermachen will. Wichtige Daten in der Session (z.B. Userdaten) sind verloren. Die Seite wird nicht richtig dargestellt und auch Klick auf Links könnten ungewollte Funktionen auslösen und unvorhersagbare Daten speichern oder laden.

2. Ein User speichert sich eine JSF Seite in seinen Favoriten. Beim Klick zwei Wochen später auf den Favorit fehlen in den Beans wichtige Informationen, die eigentlich in der Session waren. Hier ist dann das Problem, das es eine klare Struktur für die Navigation gibt, und das ein Einstieg dazwischen einfach nicht möglich ist, weil wichtige Informationen auf den vorhergehenden Seiten in der Bean gespeichert werden.

Ich freue mich über viele Antworten und geizt bitte nicht mit Details. Bitte auch mit ein paar Codeschnipsel hinzufügen, wenn ihr was habt.

Vielen Dank.
 

freez

Top Contributor
Ich möchte natürlich gleich der erste sein ... ich habe nämlich auch einen Ansatz:

zu 1.: ein Cookie bei jedem erfolgreichen Request beim Client setzen. Sollte die Session ablaufen und der User klickt doch mal drauf, wird das Cookie geladen und damit die richtigen Daten geladen. Ist Clientseitig. Aber besser als nix und hilft auch leider nix bei Speicherung der URL in den Lesezeichen (jedenfalls nur begrenzte Zeit)

zu2.: ein iframe, welches entweder direkt aufgerufen wird, oder über ein Servlet gesendet. Darin laufen dann alle jsf- Seiten ab, ohne dass der User in seinem Browser ein Änderung in der Adressleiste bemerkt. Ein Speichern in den Lesezeichen speichert nur den Einstiegspunkt.
 
M

maki

Gast
1. Ein sog. SessionTimeoutFilter kümmert sich darum
2. GET zugriffe werden mit einem autom. Logout geahndet
 
M

maki

Gast
Ja, das ist der Sinn der Filter ;)

Manche Filter (zB. Ajax4Jsf) setzen aber eine bestimmte Sequenz voraus (A4J muss immer der erste sein), aber normalerweise gibt es diese Einschränkung nicht.
 

y0dA

Top Contributor
maki hat gesagt.:
Ja, das ist der Sinn der Filter ;)

Manche Filter (zB. Ajax4Jsf) setzen aber eine bestimmte Sequenz voraus (A4J muss immer der erste sein), aber normalerweise gibt es diese Einschränkung nicht.

Bin heute nicht auf der Höhe! Ich benutze ja bei meinem aktuellen Projekt eh auch schon 2 Filter..danke für die Info.
 

freez

Top Contributor
THX @ maki: zu Punkt 1: habe gleich deinen Vorschlag mit meiner Lösung kombiniert. Frägt der User an,ohne eine gültige Session, wird in dem SessionTimeoutListener nach dem Cookie geschaut und falls vorhanden die Session wieder initiiert und auf eine bestimmte Seite geleitet. Falls nicht vorhanden, kommt eine Fehlerseite mit TimeOut und nen Link zur Startseite. Ich überlege noch, ob ich im ersten Fall mit Cookie ne Meldeseite dazwischenschalte und dem User darüber informiere, dass er zu lang weg war. Haltet Ihr es für sinnvoll?

2. GET zugriffe werden mit einem autom. Logout geahndet

Kannst du den Punkt etwas vertiefen? Mir fehlt ein Anfang für die Realisierung und überhaupt die Vorstellung, wie sich das dem User präsentiert.
 
M

maki

Gast
Ich überlege noch, ob ich im ersten Fall mit Cookie ne Meldeseite dazwischenschalte und dem User darüber informiere, dass er zu lang weg war. Haltet Ihr es für sinnvoll?
Weiss ehrlich gesagt nicht wie man Sessions reinitialisiert, aber das Vorgehen auf eine best. Seite weiterzuleiten aus dem Filter (Your Session has expiriered oder so ähnlich) mit Link auf die Loogin Serite ist so gut wie immer so umgesetzt, also Standard :)

Kannst du den Punkt etwas vertiefen? Mir fehlt ein Anfang für die Realisierung und überhaupt die Vorstellung, wie sich das dem User präsentiert.
Nun, die Frage ist eigentlich, ob ihr sowas wie "permalinks" für Favouriten etc. anbieten müsst, dann müssten die nötigen Daten in der URL mitgeschickt werden... dass das nicht trivial ist leuchtet ein.

Relativ einfach ist es allerdings, alle GET requests zu blocken (also URLS im Browser), navigiert werden kann nur ausschliesslich durch die Anwendung selbst.
Das einzig hakelige kann sein, alte Anwendungen so umzurüsten, das nur noch POST requests versendet werden.
 

freez

Top Contributor
Weiss ehrlich gesagt nicht wie man Sessions reinitialisiert
reinitialisieren ist der verkehrte Ausdruck. Besser ist wohl die neue Session so initialisieren, dass die Beans alle benötigten Informationen haben. Ich benötige dazu nur einen bestimmten String in der Session. Den kann ich mir aus dem Cookie holen. Ist ne Information, die der User eh kennt und was auch gern anderen bekannt sein darf, also nix geheimes. So kriege ich wieder eine saubere Session.

Relativ einfach ist es allerdings, alle GET requests zu blocken

Wie realisiere ich das? Mir fällt nix gescheites dazu ein.

Nun, die Frage ist eigentlich, ob ihr sowas wie "permalinks" für Favouriten etc. anbieten müsst
einen solchen Permalink habe ich bereits. Dieser geht auf die Startseite der Anwendung selbst. Dahinter steckt ein Servlet, welches die Session entsprechend initialisiert, damit auch auf der Startseite was gescheites ausgegeben wird. Eigentlich wäre es mir lieb, wenn während der gesamten Zeit dieser URL angezeigt wird auch bei Navigation durch die Anwendung. Deswegen auch das iframe.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A (EJB)Session abhängige Parameter in POJO lesen Allgemeines EE 3
O JSF / Primefaces Session handling Allgemeines EE 1
I Session löschen in Bean (Session Beans) Allgemeines EE 1
J Hello World mit Stateless Session Bean - Was mache ich falsch? Allgemeines EE 2
H Shared Session in Webmodulen Allgemeines EE 2
J Unterschied zwischen HttpSession und Stateful Session Bean Allgemeines EE 3
R Wie eine stateful session bean erneut "aufgreifen" Allgemeines EE 22
P Unterschied Session Scope / Stateful Session Bean Allgemeines EE 6
F Session zerstören Allgemeines EE 12
A Im PhaseListener auf Stateful Session Bean zugreifen Allgemeines EE 6
G Session Allgemeines EE 6
E Session Problem Allgemeines EE 9
G Session neu!? Allgemeines EE 7
M Fehler bei Javamail Session mit Glassfish 3 Allgemeines EE 3
Java.getSkill() verbindung / connection in session speichern Allgemeines EE 4
D Frage zum Statefull Session Beans Lebenszyklus Allgemeines EE 3
MQue Session - Cookie Allgemeines EE 27
MQue Session Exception Allgemeines EE 5
M j_security_check Login und Session-ID Allgemeines EE 2
S Session in eine andere Anwendung übergeben Allgemeines EE 2
Y myFaces und Hibernate Session Handling Allgemeines EE 7
S tomcat session timeout - und was danach? Allgemeines EE 1
Q Form Based Authentication - Session Attribute ? Allgemeines EE 2
A Session Bean mit Local-Interface nutzen Allgemeines EE 3
G Session Cookies Allgemeines EE 2
Q Session Tracking - Wie macht mans richtig! Allgemeines EE 3
B Session Daten pro User merken Allgemeines EE 9
H [JSP JSF] Session Timeout und Redirekt zur Startseite Allgemeines EE 5
I Session-Attribute von Client zugänglich? Allgemeines EE 6
G session token Allgemeines EE 3
K tomcat: session-unabhängiges speichern Allgemeines EE 3
S Struts und Session Allgemeines EE 2
J Tomcat mit eigener Session-Implementierung Allgemeines EE 15
Y JSF - Session Handling Firefox Allgemeines EE 3
Y JSF - Session invalidate bei outpulink möglich? Allgemeines EE 4
R Session Tracking & Cookies Allgemeines EE 3
B Variablen ausserhalb der session ? Allgemeines EE 2
T Zugriff auf Session-Objekte in JSP Allgemeines EE 2
W Session tracking mit URL rewrite - Session weg! Allgemeines EE 4
G Neue Session bei der Verwendung von Frames Allgemeines EE 3
RaoulDuke EJB 3.0 - Exceptions aus Methoden einer Session Bean Allgemeines EE 2
T Session-Problem Allgemeines EE 2
Z Session aufräumen Allgemeines EE 2
G Session Problem Allgemeines EE 5
G JBoss - Session / Entity Allgemeines EE 8
S Bild in Session Allgemeines EE 2
F Session Bean -> Daten aus dem Servlet holen Allgemeines EE 11
P Struts Form Bean vs. Session Variable Allgemeines EE 6
A JSF - Daten in Session speichern Allgemeines EE 2
R Formulareingaben gezielt aus Session löschen Allgemeines EE 4
W Session nach Browserschließung erhalten im Tomcat Allgemeines EE 4
R Vernünftige Session-Verwaltung mit Struts Allgemeines EE 4
Q Tomcat/java-Session-Problem Allgemeines EE 9
L Zwei Browserfenster mit unterschiedlicher session - geht das Allgemeines EE 3
flashfactor Logging in einem Session-Bean Allgemeines EE 2
H JSP, Session und Java-Bean Allgemeines EE 4
P Session Problem Allgemeines EE 17
flashfactor Frage zu Session-Lebensdauer Allgemeines EE 3
J xdoclet session facade + value object Allgemeines EE 2
M Session Bean vers. Entity Bean Allgemeines EE 3
G ResultSet in Session speichern Allgemeines EE 4
P Session Attribute an Klasse übergeben Allgemeines EE 13
G Mit Session-IDs richtig umgehen Allgemeines EE 3
C Mail von einer Session Bean aus senden Allgemeines EE 2
P Session NullPointerException Allgemeines EE 17
H daten in session speichern Allgemeines EE 8
G list in session schreiben Allgemeines EE 4
P String-Array an session Variable übergeben Allgemeines EE 3
P Session Beans importieren Allgemeines EE 2
F Problem mit Session (Weitergabe an andere JSPs) Allgemeines EE 2
G Nativer bzw. direkter Zugriff auf Active Directory Allgemeines EE 4
G Direkter Zugriff auf Servlet- doPost Allgemeines EE 15

Ähnliche Java Themen

Neue Themen


Oben