2012-05-13 26 views
6

Jestem w środowisku Jboss AS 7. Ścieżka mojej aplikacji/admIn/* jest chroniona przez ograniczenie bezpieczeństwa, które wymaga uwierzytelniania opartego na formularzach. Domena bezpieczeństwa jest wspierana przez bazę danych.Bezpieczeństwo JBoss AS 7: jak uzyskać aktualnie zalogowaną nazwę użytkownika?

Jest ok, ale teraz chcę wyświetlić "dzień dobry" w nagłówku każdej strony. Szukam jakiejś funkcji getLoggedUsername() lub getPrincipal(), ale nie mogę jej znaleźć.

Prosimy o zamieszczenie odniesienia do oficjalnych dokumentów, jeśli takie istnieją. Dziękuję.

+0

Wygląda na duplikat, właśnie znalazłem http://stackoverflow.com/questions/1938517/how-to-get-sessioncontext-in-joss, ale widzę, że każdy, kto znalazłby to pytanie, nie znalazłby drugiego jeden, nie wiedząc, że najpierw spojrzy na JAAS. –

Odpowiedz

9

Powinieneś być w stanie używać JAAS. Właśnie tego powinien używać JBoss 7.

Wezwanie główne zostanie zapisane w SessionContext, które można uzyskać, informując JBoss, że jest zasobem.

Jeśli z jakiegoś powodu Injection nie działa na fasoli bezstanowej, można wyszukać bezpośrednio EJBContext.

@Stateless 
public class HelloBean implements com.foo.ejb.HelloRemote { 
    public void hello() { 
     try { 
      InitialContext ic = new InitialContext(); 
      SessionContext sctxLookup = 
       (SessionContext) ic.lookup("java:comp/EJBContext"); 
      System.out.println("look up EJBContext by standard name: " + sctxLookup); 
     } catch (NamingException ex) { 
      throw new IllegalStateException(ex); 
     } 
    } 
} 

Ten fragment został uzyskany od 4 ways to obtain EJBContext.

+0

Ok. Gdzie umieściłbyś ten kod? Stanowy ejb? –

+0

@FabioB. To nie musi być stanowe. Zaktualizuję moją odpowiedź w inny sposób. Powinieneś być w stanie używać Injection z bean bezstanowej, ale jeśli to nie działa, możesz bezpośrednio przejrzeć kontekst. –

Powiązane problemy