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 :

gérer les sessions


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut gérer les sessions
    bonjour tout le monde,
    je veux savoir comment on fait pour vérifier la session avant de manipuler qui que se soit, pour empêcher à un intrus d'accéder à la page via l'url.
    je veux aussi savoir comment détruire la session pour déconnecter l'utilisateur, faut il passer par un bean ou on peut faire ça avec jsf?
    et merci d'avance

  2. #2
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    premiere question utilise un filtre qui teste si la session est deja cree sionon redirection vers page de login.
    pour la deuxieme tu peux extraire du facecontext la session courante puis tu fais un invalidate

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut
    Est ce que vous voulez dire par filtre les filtre jsp?

  4. #4
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    filtre jsp ??
    les classes filter heritant de javax.servlet.Filter (partit de la sepecification des servlet)

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut
    Ah oui,
    donc si je comprend on doit gérer les sessions "manuellement" on ne peut pas compter sur JSF pour le faire?

  6. #6
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    si je ne dis pas des bétises ici

  7. #7
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut
    j'ai lu le FAQ mais j'ai pas trouvé comment vérifier est ce que la session est la bonne,
    le truc que je veux, c'est vérifier la session au début de chaque page: si oui on continue sinon on est redirigé vers l'accueil pour s'authentifier, ma question: est ce qu'on peut le faire avec jsf pour chaque page (sans utiliser un bean)?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    J'ai fait quelque chose qui ressemble à ce que tu veux faire.

    J'ai une page login.jsp avec un formulaire demandant login et mot de passe.
    J'ai un bean (session) associé qui appelle une classe d'authentification pour verifier les login/mdp de l'utilisateur et qui renvoi une String pour rediriger l'utilisateur vers la page suivante en cas de succès ou rester sur login en cas d'échec (à configurer dans le faces-config avec des règles de navigation) et qui met à jour un booléen de mon bean associé à la page login.jsp.
    Puis dans toutes mes pages jsp sauf login, j'inclue une page jsp qui, grace à la lib JSTL, fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="std"%>
     
     
    	<std:if test="${!auth.login}">
    		<std:redirect url="./login.jsf" />
    	</std:if>
    auth etant le nom de mon bean associé à la page login.jsp et login mon booléen.

    Cela fonctionne très bien.
    J'ai cru comprendre que c'était cà que tu appelais "controler la session".

    Et pour gérer la deconnexion :

    un commandLink qui appelle cette méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	public String deconnexion(){
    		((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true)).invalidate();
    		return "deconnecte";
    	}

  9. #9
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Par défaut
    Citation Envoyé par Breezy Voir le message
    J'ai fait quelque chose qui ressemble à ce que tu veux faire.

    J'ai une page login.jsp avec un formulaire demandant login et mot de passe.
    J'ai un bean (session) associé qui appelle une classe d'authentification pour verifier les login/mdp de l'utilisateur et qui renvoi une String pour rediriger l'utilisateur vers la page suivante en cas de succès ou rester sur login en cas d'échec (à configurer dans le faces-config avec des règles de navigation) et qui met à jour un booléen de mon bean associé à la page login.jsp.
    Puis dans toutes mes pages jsp sauf login, j'inclue une page jsp qui, grace à la lib JSTL, fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="std"%>
     
     
    	<std:if test="${!auth.login}">
    		<std:redirect url="./login.jsf" />
    	</std:if>
    auth etant le nom de mon bean associé à la page login.jsp et login mon booléen.

    Cela fonctionne très bien.
    J'ai cru comprendre que c'était cà que tu appelais "controler la session".

    Et pour gérer la deconnexion :

    un commandLink qui appelle cette méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	public String deconnexion(){
    		((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true)).invalidate();
    		return "deconnecte";
    	}
    Serait il possible de nous montrer ton JavaBean auth?merci

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    package com.xxxx.presentation.bean.authentification;
     
    import java.util.List;
     
    import javax.faces.application.FacesMessage;
    import javax.faces.context.FacesContext;
    import javax.servlet.http.HttpSession;
     
    import com.xxxx.Collaborateur;
    import com.xxxx.authentification.Bind;
    import com.xxxx.dao.CollaborateurHome;
     
    public class User {
     
    	private String trigramme;
    	private String password;
    	private boolean login = false;
     
    	public User() {}
     
    	public String getTrigramme() {
    		return trigramme;
    	}
     
    	public void setTrigramme(String trigramme) {
    		this.trigramme = trigramme;
    	}
     
    	public String getPassword() {
    		return password;
    	}
     
    	public void setPassword(String password) {
    		this.password = password;
    	}
     
    	public boolean getLogin() {
    		return login;
    	}
     
    	public void setLogin(boolean login) {
    		this.login = login;
    	}
     
    	public String login(){
    		String result = "echoue";
    		CollaborateurHome ch = new CollaborateurHome();
    		FacesContext context = FacesContext.getCurrentInstance();
    		List<Collaborateur> colList = ch.findByProperty("nom", getTrigramme(), "Collaborateur");
    		if (getTrigramme()==""){
    			String messNomVide = "Le nom utilisateur ne peut être vide";
    			FacesMessage messageNomVide = new FacesMessage(FacesMessage.SEVERITY_ERROR,messNomVide,messNomVide);
    			context.addMessage("login:validateLogin", messageNomVide);
    		}else if (getPassword()==""){
    			String messPasswdVide = "Le mot de passe ne peut être vide";
    			FacesMessage messagePasswdVide = new FacesMessage(FacesMessage.SEVERITY_ERROR,messPasswdVide,messPasswdVide);
    			context.addMessage("login:validateLogin", messagePasswdVide);			
    		}else if (colList.isEmpty()){
    			String messNonAuthorise = "Vous n'êtes pas autorisé à vous connecter";
    			FacesMessage messageNonAuthorise = new FacesMessage(FacesMessage.SEVERITY_ERROR,messNonAuthorise,messNonAuthorise);
    			context.addMessage("login:validateLogin", messageNonAuthorise);
    		}else{
     
    			int resultConnection = Bind.connexion(getTrigramme(), getPassword());
    			if (resultConnection == 1){
    				setLogin(true);
    				result = "authentifie";
    			}else if (resultConnection == 2){
    				String messErreur = "Erreur dans voter nom d'utilisateur ou votre mot de passe";
    				FacesMessage messageErreur = new FacesMessage(FacesMessage.SEVERITY_ERROR,messErreur,messErreur);
    				context.addMessage("login:validateLogin", messageErreur);			
    				setLogin(false);
    				result = "echoue";
    			}else if (resultConnection == 3){
    				setLogin(true);
    				result = "authentifie";
    			}
    //			log.debug("User - login : valeur de result = "+result);
    		}
    		return result;
    	}
     
    	public String deconnexion(){
    		((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true)).invalidate();
    		return "deconnecte";
    	}
     
    }
    Le Bind.connexion est une methode static de la class Bind qui interroge notre activeDirectory (ou LDAP) pour verifier le passwd de l'utilisateur.

  12. #12
    Membre confirmé Avatar de Mr-Mobou
    Inscrit en
    Juin 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 58
    Par défaut
    Merci Amigo pour les réponces

Discussions similaires

  1. [WCF][NHibernate] HttpModule pour gérer les sessions NHibernate
    Par diplomegalo dans le forum NHibernate
    Réponses: 10
    Dernier message: 11/07/2012, 13h28
  2. Script pour gérer les sessions utilisateurs sous Ubuntu
    Par thucydide dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 08/06/2012, 11h51
  3. Gérer les Session avec Webkit
    Par CKDevelop dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 28/01/2011, 20h19
  4. comment gérer les sessions avec du javascript ?
    Par zerros dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2009, 09h27
  5. Gérer les sessions avec PEAR
    Par manaboko dans le forum Langage
    Réponses: 1
    Dernier message: 08/05/2006, 14h50

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