IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Logout et problème de session


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Par défaut Logout et problème de session
    salut,

    je travail avec richfaces et jsf 1.2

    j'arrive à faire l'authentification avec richfaces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <head>
    <title>Authentification</title> 
    </head>
    <body>
     <h:outputText value="Login: "/>  
     <h:inputText id="log" value="#{Verification.utilisateur.login}"/>
    <h:outputText value="Mot de passe:" />
    <h:inputSecret id="mdp" value="#{Verification.utilisateur.password}"/>
     
      <a4j:commandButton id="ButtonID" value="Connection" action="#{Verification.connect}" > 
     
        </a4j:commandButton>
     
    </body>
    </html>
    et pour la class Verification
    contient la méthode connect
    et un objet de type utilisateur

    je teste le code et il est correcte
    et quand la connection est juste elle me derige vers une autre page Acceuil.xhml
    et ceci grace au type de retour de la méthode connect

    le but à ce moment est je veux que dans la page Acceuil.xhml
    elle conserve en haut le nom d'utilisateur à travers dequel j'ai connecté et à coté de nom d'utilisateur un bouton "logout" et quand je clique dans ce bouton elle me retour au page initial (authentification)

    donc je dois avoir dans la class Verification une méthode "logout"


    et aussi comment récupérer le nom d'utilisateur avec lequel j'ai connecte et mettre ce nom en haut de page Acceuil.xhml


    est ce que quelqu'un connait ce genre des problème
    merci d'avance

  2. #2
    Membre confirmé Avatar de koack
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 60
    Par défaut
    Bonsoir,

    si vous vous voullez conserver la valeur "login" saisie par l'utilisateur vous devez pour cela mettre votre managed bean Verification en scope session.

    et avoir une methode logout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public String logout() {
    ((HttpSession) FacesContext.getCurrentInstance().getExternalContext()
     
    				.getSession(true)).invalidate();
     
    return "logout";
    }
    cf FAQ : http://javaweb.developpez.com/faq/jsf/?page=astuces

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    merci pour la réponse

    mon but est après authentification (bien sur si l'authentification est réussite)
    et après redirection vers la page acceuil.xhtml

    je veux dans la page acceuil.xhtml en haut de la page écrire :bienvenu : (ici le login que je l'utilise dans la connexion)

    à cote de ce message un lien(ou bouton) logout pour la déconnexion

    la class Verification est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    public class Verification
     
    {
     
     
    private Utilisateur utilisateur=new Utilisateur();	
    private String login;
    private String password;
    public void setUtilisateur(Utilisateur utilisateur) {
    	this.utilisateur = utilisateur;
    }
     
    public Utilisateur getUtilisateur() {
    	return utilisateur;
     
    public String getLogin() {
    	return login;
    }
     
    public void setLogin(String login) {
    	this.login = login;
    }
     
    public String getPassword() {
    	return password;
    }
     
    public void setPassword(String password) {
    	this.password = password;
    }
     
     
    public String connect(){
    	if (login.equals("edward")&&password.equals("edward2"))
    	{
    		return "success";
    	}
    	return "failed";
    }
     
     
    public String logout() {
    ((HttpSession) FacesContext.getCurrentInstance().getExternalContext()
     
    				.getSession(true)).invalidate();
     
    return "logout";
    }
     
     
    }

    j'espere que cet class contient tous les methode necessaire pour que j'arrive à attendre mon objectif

    je veux savoir la structure de fichier acceuil.xhtml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <head>
    <title>Acceuil</title> 
    </head>
    <body>
    <h:outputText value="Bienvenu: "/>  
    // je dois mettre le code qui récupère le login dont laquel je l'utilise pour la connection
     
     <a4j:commandButton id="ButtonID" value="Déconnection" action="#{Verification.logoutt}" > 
     
        </a4j:commandButton>
     
     
    </body>
    </html>
    pouvez m'aidez à corriger ce code

    merci d'avance

  4. #4
    Membre confirmé Avatar de koack
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 60
    Par défaut
    Re,

    Le probléme est que vous voullez utiliser quelque chose qui n'a pas était fait pour ça. Les ManagedBean en scope Session sont utilisés pour stocker un Panier utilisateur pour un sîte d'achat par exemple. Votre probléme est dû a l'authentification pour cela vous devriez utiliser JAAS c'est une API d'authentification (login-password, douchette code barre, 0..) et de rôle utilisateur (client, administrateur, ...).

    Si vous souhaitez tout de même utiliser un ManagedBean pour votre authentification essayez quelque chose comme ça :

    Votre ManagedBean en scope Session.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public class Bean {
     
    	private Utilisateur utilisateur = new Utilisateur();
     
    	public Bean() {
     
    	}
    	public String Connection() {
    		if (utilisateur.login =="edward" && utilisateur.password == "edward2")
    		{
    			return "success";
    		}
    		return "failed";
    	}
     
    	public String logout() {
    		FacesContext fc = FacesContext.getCurrentInstance();
    		HttpSession httpSession = (HttpSession) fc.getExternalContext().getSession(false);
    		httpSession.invalidate();
    		return "logout";
    		}
     
    	// GETTER-SETTER
     
    }
    Dans Votre nouvelle page pour afficher le login :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:outputText value="#{NomDuBean.utilisateur.login}"/>

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    merci pour votre réponse

    j'arrive à récupérer le login (qui j'ai l'utilise dans la connection)
    grace à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{Verification.utilisateur.login}"/>
    mais j'ai un problème pour la déconnexion dans la même page (accuil.xhtml)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       <a4j:commandButton value="deconnection" action="#{Verification
    .logout}">
     
        </a4j:commandButton>
    et dans le fichier faces-config.xml j'ai deux page login.xhtml et acceuil.xhtml

    et j'ai réalise une navigation de acceuil.xhtml vers login.xhtml avec comme message :logout


    mais quand je clique dans ce bouton elle ne me dirige pas vers la page login.xhtml
    (aucun évènement suite au clique sur le bouton)

    merci d'avance

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    le code source de fichier "faces-config.xml"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?xml version="1.0" encoding="UTF-8"?>
     
    <faces-config
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
        version="1.2">
    	<managed-bean>
    		<managed-bean-name>Verification</managed-bean-name>
    		<managed-bean-class>org.Verification</managed-bean-class>
    		<managed-bean-scope>session</managed-bean-scope>
    	</managed-bean>
    	<navigation-rule>
    		<display-name>login.xhtml</display-name>
    		<from-view-id>/login.xhtml</from-view-id>
    		<navigation-case>
    			<from-outcome>success</from-outcome>
    			<to-view-id>/Acceuil.xhtml</to-view-id>
    		</navigation-case>
    	</navigation-rule>
    	<navigation-rule>
    		<display-name>Acceuil.xhtml</display-name>
    		<from-view-id>/Acceuil.xhtml</from-view-id>
    		<navigation-case>
    			<from-outcome>logout</from-outcome>
    			<to-view-id>/login.xhtml</to-view-id>
    		</navigation-case>
    	</navigation-rule>
     
    </faces-config>

  7. #7
    Membre confirmé Avatar de koack
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 60
    Par défaut
    Re,

    essayez de rajouter <h:messages> dans vos pages xhtml,

    rajoutez un system.out ...dans la methode logout

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    merci pour la reponse

    avec un petit recherche permet d'afficher les messages d'erreur généré par les validators

    donc le code de la page acceuil.xhtml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <head>
    <title>Acceuil</title> 
    </head>
    <body>
     
    <h:outputText value="#{Verification.utilisateur.login}"/>
     
      <a4j:commandButton id="ButtonID" value="deconnection" action="#{Verification.logout}" > 
     
        </a4j:commandButton>
        <h:message for="ButtonID" />
     
    </body>
    </html>

    mais franchement je n'arrive pas a comprendre l'utilité de rajoutez un system.out ...dans la methode logout

    car je pense que le but est de ne pas avoir un message ,le but est de la redirection vers la page de depart(login.xhtml) quand je clique dans le bouton "deconnection"

    après exécution et quand je clique sur le bonton"deconnection" je reste dans la même page

  9. #9
    Membre confirmé Avatar de koack
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 60
    Par défaut
    Le tag que j'ai écrit est <h:messages/> (tout les messages) et non <h:message>(message du composant ciblé).

    Le system.out ... est pour vérifier que la méthode logout est appelée.

    Si un problème de validation ou autre pendant les phases jsf arrive vous resterez sur la même page.

    Donc le Tag <h:messages> est la pour vous dire ce qui peut parfois poser problème.

    EDIT :

    Je viens de percuter ...
    Vous n'avez pas mis votre <h:commandButton> dans un <h:form>

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. Problème de session
    Par kephy dans le forum Langage
    Réponses: 11
    Dernier message: 24/11/2005, 10h08
  3. Problème de session
    Par meda dans le forum Langage
    Réponses: 13
    Dernier message: 25/10/2005, 18h25
  4. problème de session en cours
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 14h36
  5. Gros problème de session/cookies
    Par valfredr dans le forum XMLRAD
    Réponses: 18
    Dernier message: 03/06/2004, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo