2010-12-29 5 views
11

Skonfigurowałem logowanie oparte na formularzu w mojej aplikacji JSF 2.0 na serwerze GlassFish 3, używając niestandardowej dziedziny. Jaki jest najprostszy sposób uzyskania informacji o zalogowanym użytkowniku, tj. Nazwie użytkownika.Jak wyświetlić zalogowanego użytkownika, aplikację JSF 2.0 z zabezpieczeniami opartymi na formularzach

Czy to możliwe? A może bieżąca sesja jest powiązana z rolą bezpieczeństwa? Jeśli tak, czy jest jakiś sposób, aby to umożliwić, bez zmiany konfiguracji logowania?

Po prostu, co chcę jest wyświetlanie prosty komunikat:

zalogowany jako nazwę użytkownika

na moich stronach internetowych.

Odpowiedz

18

Najłatwiej dostać się na zalogowanego użytkownika poprzez EL (Expression Language) w JSF 2.0 będzie:

#{request.remoteUser} 

odpowiedź Tobbe byłby dobrze dostać na pilocie zdalnego użytkownika z fasoli podkładowej.

11

Prosta (może nie najlepszy) odpowiedź była:

FacesContext.getCurrentInstance().getExternalContext().getRemoteUser() 

Jestem w szoku, jak długo zajęło mi, aby dowiedzieć się, że.

0

w twojej klasie loginmanagedbean zdefiniuj currentUSer, a w geterze to: nie korzystałem z zewnętrznego systemu logowania, a to działa dla mnie.

public Login getCurrentUser() { 
    FacesContext fc = FacesContext.getCurrentInstance(); 
    ExternalContext externalContext = fc.getExternalContext(); 
    if (externalContext.getUserPrincipal() == null){ 
     logger.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!current principal is null"); 
    } 
    else{ 
     Integer id = Integer.parseInt(externalContext.getUserPrincipal().getName()); 
     logger.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!LOGGED USER "+ id); 
     try { 
      currentUser = getLoginService().getLoginById(id); 
     } 
     catch (Exception ex) { 
     } 
    } 
    return currentUser; 
} 
+0

Co to za linia? 'Integer id = Integer.parseInt (externalContext.getUserPrincipal(). GetName());' Próbujesz parsować nazwę jako int? –

0

Wewnątrz Facelets można użyć #{request.userPrincipal.name}.

Powiązane problemy