2017-03-24 2 views
0


Je teste un journal simple avec httpsession, donc après j'authentifie l'utilisateur ajouter un attribut utilisateur à la session http:JSF attribut HttpSession devient nul après rafraîchissement/redirection

@ManagedBean 
@SessionScoped 
public class loginView { 
.... 
    public String connect() { 
     FacesContext context = FacesContext.getCurrentInstance(); 
     if (authenticated) { 
      context.getExternalContext().getSessionMap().put("user", login); 
      return "/home/NewFile?faces-redirect=true"; 
     } else { 
      context.addMessage(null, new FacesMessage("Unknown login, try again")); 
      login = ""; 
      pwd = ""; 
      return null; 
     } 
    } 
} 

Quand je Appelez cette fonction à partir de la vue de connexion qu'il redirige vers NewFile.xhtml comme il est censé le faire. Et à l'intérieur du xhtml, j'affiche l'attribut "user" en utilisant #{user}. Jusqu'à présent, tout fonctionne correctement, mais quand je rafraîchis la page (NewFile.xhtml) ou quand je redirige vers une autre page et essaie d'afficher l'attribut "user" je reçois la valeur null, est-ce que ce comportement est attendu? est-ce que rafraichir ou rediriger crée une autre httpsession? ou est-ce juste la suppression de l'attribut que j'ai ajouté?

Répondre

0

Après quelques recherches j'ai réussi à résoudre mon problème, il s'avère que c'est juste une erreur stupide de ma part. donc je pensais que je devrais laisser la réponse ici au lieu de supprimer la question. Après quelques recherches, j'ai découvert que cela concernait les cookies, donc j'ai suivi le trafic HTTP en utilisant le F12 de chrome et c'était le serveur qui envoyait de nouveaux cookies chaque fois que je me rafraîchissais/naviguais. Et après plus de recherche et de test, j'ai découvert ce qui causait la session d'invalider, donc j'appelais une fonction de déconnexion (qui invalide la session) de cette façon: <h:button outcome="view.logout()"/> s'avère outcome exécute la fonction avant de charger la page, donc j'avais pour le changer à <p:commandButton action="view.logout()"/>