JSF - méthode java: getCurrentUserName

Je suis en mesure de passer le nom d'utilisateur de JSF pour managed bean par exemple de cette façon:

<script type="text/javascript" >
  function onLoad(){
    document.getElementById("form:user").value = "#{sessionScope['username']}";}
  window.onload = onLoad;
</script>

<h:inputHidden id="user" value="#{bean.username}"/>

Est-il possible de le faire directement à l'aide de méthode en Java?
J'ai essayé quelque chose comme:

public String getCurrentUserName()
{
  String name = "";
  FacesContext facesContext = FacesContext.getCurrentInstance();
  ExternalContext externalContext = facesContext.getExternalContext();

  if (externalContext.getUserPrincipal() != null) {
    name = externalContext.getUserPrincipal().getName(); //null
  }
  return name;
}

ou:

facesContext.getExternalContext().getRemoteUser();       //null
facesContext.getExternalContext().isUserInRole("pps");   //null

Mais l'utilisateur est toujours null.. ce qui fais de mal?

Mise à JOUR (création d'une session conteneur):

public String login() {
  ...
  FacesContext context = FacesContext.getCurrentInstance();
  session = (HttpSession) context.getExternalContext().getSession(true);
  session.setAttribute("id", user.getId());
  session.setAttribute("username", user.getName());
  ...
  • Comment vous authentifier l'utilisateur?
  • Je devine que vous n'êtes pas à l'aide de container-managed authentication. Essayez externalContext.getSessionMap().get("username").
  • ça y est! merci! merci de créer la réponse à l'accepter 🙂
InformationsquelleAutor gaffcz | 2012-08-27