Exibir dados do usuário logado na sessão

Bom, tou fazendo um sisteminha usando Spring, JSF, Hibernate e Facelets…
Eu consigo logar normalmente, vou pra index do usuário com seus roles e tal.
Só que nessa index que o usuário entrou (logou), quero recuperar o objeto (Usuario) para exibir seus dados (nome, login, etc…).

login.xhtml:

<h:form id="loginForm" prependId="false">
               <p:panel header="Entrar no Sistema" style="width: 400px; margin: 0 auto;">
                            <div align="center">
                                <p:message for="j_username"/>
                                <p:message for="j_password" />
                                <h:panelGrid columns="2" columnClasses="esq,dir" cellpadding="5">
                                    <h:outputLabel for="j_username" value="Login:"/>
                                    <h:inputText id="j_username"
                                                 required="true"
                                                 requiredMessage="Informe seu login"
                                                 size="25">
                                    </h:inputText>
                                    <h:outputLabel for="j_password" value="Senha:" />
                                    <h:inputSecret id="j_password"
                                                   required="true"
                                                   requiredMessage="Informe sua senha"
                                                   size="25" />
                                </h:panelGrid>
                            </div>
                            <p:commandButton type="submit" style="margin-left: 180px"
                                             id="login" ajax="false"
                                             action="#{loginBean.doLogin}"
                                             value="Entrar" />
             </p:panel>
</h:form>

LoginBean:

//...imports

@ManagedBean
@SessionScoped
public class LoginBean
{
    //managed properties for the login page, username/password/etc...
 
    // This is the action method called when the user clicks the "login" button
    public String doLogin() throws IOException, ServletException
    {
        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
 
        RequestDispatcher dispatcher = ((ServletRequest) context.getRequest())
                 .getRequestDispatcher("/j_spring_security_check");
 
        dispatcher.forward((ServletRequest) context.getRequest(),
                (ServletResponse) context.getResponse());
 
        FacesContext.getCurrentInstance().responseComplete();
        // It's OK to return null here because Faces is just going to exit.
        return null;
    }
}

O que devo fazer pra o usuário ser colocado na sessão?
Se alguém poder ajudar, agradeço.

via menage bean:

@ManagedBean   
@SessionScoped   
public class LoginBean   
{   
     public String doLogin() throws IOException, ServletException   
    {     
      // seu codigo  
      java.security.Principal name=FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
      Boolean role=FacesContext.getCurrentInstance().getExternalContext().isUserInRole("membro");
...

na pagina:

<h:outputText value="#{facesContext.externalContext.userPrincipal.name}" />
<h:commandLink action="link" value="link" rendered="#{facesContext.externalContext.isUserInRole('membro')}"/>

é + ou - isso que voçê precisa?

Na verdade, pra pegar o login do usuário logado é do jeito q vc falou.
Só q não precisei declarar nada no managed bean, é só usar direto o outputText na página: facesContext.externalContext.userPrincipal.name

Agora, a dúvida é pegar todos os outros campos do usuário logado (por exemplo, quero saber o endereço dele).
Como eu usaria o facesContext? Ou existiria uma forma mais adequada que não seja o facesContext.

Valeu.