# JSF / Primefaces Session handling



## Ovoxo (4. Mrz 2016)

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

```
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.

```
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.


----------



## BuckRogers (13. Apr 2016)

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


----------

