JSF / Primefaces Session handling

Ovoxo

Mitglied
Hallo zusammen,

Ich bin ein ziemlicher Neuling in JSF / Primefaces.
Nun muss ich für eine Schularbeit ein Webapplikation erstellen.
Dabei gibt es eine Login Seite. Nach dem Einloggen, kann der User auf zwei weitere Seiten.
Mein Ziel ist es, dass nur eingeloggte User auf die weiteren zwei Seiten kommen.
Auch wenn man den Link kopiert sollte man auf die Login Seite kommen, falls er nicht eingeloggt ist.

Ich habe via Google gesucht und einige Beispiele gefunden.

Wenn der User sicht erfolgreich anmeldet, setze ich den Namen in die Session und rufe die neue Seite auf.
LoginController
Java:
HttpSession session = SessionBean.getSession();
            session.setAttribute("username", username);
return "/faces/page2";


Nun prüfe ich beim Aufruf von page2Controlle, ob der username gesetzt ist.
Damit will ich den Aufruf über Link kopieren verhindern.
Java:
HttpSession session = SessionBean.getSession();
if(session.getAttribute("username") == null){
            System.err.println("Session Empty!");

            return "/faces/login";
        }else{
            System.err.println("Session OKEY: ");
            return "/faces/page3";
        }

public static HttpSession getSession() {
        return (HttpSession) FacesContext.getCurrentInstance()
                .getExternalContext().getSession(false);
    }

Es prüft eigentlich diesen Fall, jedoch geht es nicht auf die Login Seite zurück.
Es zeigt die Seite an, wie wenn der User sich angemeldet hat.
 
Hallo,

wahrscheinlich ist die Abgabe deiner Schularbeit schon längst gelaufen. Aber das wonach du suchst ist ein "Filter" bzw "WebFilter". Dazu gibt es hier einige interessante Artikel:

http://www.java-forum.org/thema/jsf-primefaces-session-handling.172080/

WebFilter kannst du zu bestimmten Requests hinzufügen und werden durchlaufen BEVOR deine Anfrage weiter verarbeitet wird. Wenn dann zum Beispiel der Username nicht in der Session vorhanden ist, kannst du den request auf deine Login-Seite zurück leiten.

Grüße
 

Zurück
Oben