Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Mit JSF? Dafür können zwei Elemente, <hanelgroup rendered="user.loggedIn"> ... </hanelgroup> bzw. <hanelgroup rendered="! user.loggedIn"> ... </hanelgroup> verwendet werden.
Ja, das funktioniert nur, wenn Du auch eine entsprechende Anmeldung vornimmst.
Wenn Du das händisch implementiert hast, könntest Du einen PhaseListener schreiben, der bei einem Request prüft, wo dieser herkommt und dann die Prüfung vornehmen.
habe es schon mit einem request.login gemacht sprich ich nutze JAAS
ich hab das mit dem getUserPrincipal bereits an einer anderen Stelle genutzt... zum Beispiel bekomme ich ja nicht ohne Weiteres (zumindest ist mir das nicht bekannt wie ) den aktuell angemeldeten Benutzer mit all seinen Attributen.
Beispiel:
Ein Administrator hat eine Benutzerliste mit allen Benutzern und kann diese bearbeiten, löschen und neu anlegen. Da er nun nicht sich selbst löschen sollte, habe ich in der Abfrage (JPA, JPQL) genau diesen Benutzer ausgeschlossen. Den hab ich mir mit dem Principal geholt (da die Benutzernamen sowieso eindeutig sind).
Wenn es noch eine Möglichkeit gibt das Benutzer-Objekt (Entity-Klasse) DIREKT über den Login zu holen, nehme ich sie auch gerne.
naja du kannst die UserEntity ja beim Login in einem SessionScoped UserController setzen und dann jederzeit abfragen.
Mit JAAS kommst du auch jederzeit an den Usernamen des eingeloggten Benutzers:
Java:
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) fc.getExternalContext().getRequest();
Principal principal = request.getUserPrincipal();
principal.getName()
über den Login-Namen kannst du ja auch jederzeit die UserEntity nachladen.
ok...so habe ich es derzeit auch gemacht Dachte, es geht vielleicht noch etwas angenehmer, sodass ich mir direkt wärend des Logins das nötige Objekt mit zurückgeben lassen kann, ohne eine separate JPQL-Abfrage abzuschicken
Habe jetzt die Funktion nocheinmal implementiert.... das mit dem getUserPrincipal funktioniert anscheinend doch
Vielleicht war das Problem einfach die Weiterleitung.
Ich könnte ja ein <c:if> setzen und darin einen
Code:
<meta http-equiv="refresh" content="0; URL=...">
setzen
könnte ich es auch Serverseitig machen? sodass die Seite garnicht erst an den Browser geschickt wird?
Die JSF-Seiten werden ja so oder so erst verarbeitet und dann abgesendet, wenn ich direkt am Anfang diese IF-Abfrage sende und darin eine Funktion aufrufe, die mich weiterleitet?!
ok, habs... hab mir einen kleinen Navigator gebastelt mit folgender Methode:
Code:
public void goTo(String site) {
FacesContext fc = FacesContext.getCurrentInstance();
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, site + ".xhtml?faces-redirect=true");
}