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 :

JSF managedBean - Session


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Par défaut JSF managedBean - Session
    salut, j'ai quelque question concernant jsf
    1. Comment on peut enregistrer le nom de l'utilisateur dans la session pour faire afficher dans tous les pages du site ?
    2. Quelle est l'intérêt de rendre un managedbean serializable exp:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class PersoBean implements Serializable {
    }

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Un managedBean n'a pas besoin d'implémenter l'interface Serializable
    Pour ton autre question, quel type d'authentification utilises-tu ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Bonjour,

    1. Dans ton PersoBean tu devrais avoir une variable "private Perso(nne) current;" qui prendra la valeur de l'utilisateur authentifié.

    Sur le fichier template.(x)html qui servira de modèle pour toutes les pages du site il y aura quelque part dans la partie supérieure un champs de texte qui affichera après authentification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText id="welcomeUser" value="Bienvenue #{persoBean.current.prenom} #{persoBean.current.nom}" />
    2. Si jamais l'utilisateur en question a un rôle qui lui permet de créer des autres objets Perso(nne) ou encore qu'il y ait des instances de PersoBean dans les autres beans de l'application (l'auteur d'un Livre, le possesseur d'un Panier) créées via des @ManagedProperty/private @Inject: il vaut mieux que PersoBean soit serializable.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Dans le cas d'une authentification conteneur (JAAS), on récupère l'utilisateur connecté via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
    d'où ma question...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Par défaut
    Salut, merci a tous pour vos réponses

    j'ai fait implémenter un LoginBean pour faire l'authentification d'un utilisateur d'une manière statique en utilisant un formulaire via une interface web

    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
    public class LoginBean implements Serializable {
        private String login;
        private String motDePasse;
    
        public String getLogin() {
            return login;
        }
    
        public void setLogin(String login) {
            this.login = login;
        }
    
        public String getMotDePasse() {
            return motDePasse;
        }
    
        public void setMotDePasse(String motDePasse) {
            this.motDePasse = motDePasse;
        }
    
        public String authentification() {
            String msg;
            FacesContext fc = FacesContext.getCurrentInstance();
            if (login.isEmpty() || !login.equals("user")) {
                msg = "Login " + login + " inexistant !!";
                fc.addMessage(null, new FacesMessage(msg));
                return null;
    
            } else if (motDePasse.isEmpty() || !motDePasse.equals("user")) {
                msg = "vérifiez votre mot de passe ";
                fc.addMessage(null, new FacesMessage(msg));
                return null;
    
            } else {
                fc.getExternalContext().getSessionMap().put("login", login);
            }
            return "success";
        }
    
        public String logout() {
            login = motDePasse = "";
            return null;
        }
    }
    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
    public class FournisseurBean implements Serializable {
        private FournisseurService fournisseurSrevice = new FournisseurService();
        private List<Fournisseur> listFournisseur = null;
        private String login = "";
    
        public List<Fournisseur> getListFournisseur() {
            listFournisseur = fournisseurService.listFournisseurs();
            return listFournisseur;
        }
    
        public void setListFournisseur(List<Fournisseur> listFournisseur) {
            this.listFournisseur = listFournisseur;
        }
    
        public String afficherListeFournisseurs() {
            FacesContext fc = FacesContext.getCurrentInstance();
            login = (String) fc.getExternalContext().getSessionMap().get("login");
            return "list";
        }
        public String getLogin() {
            return login;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:outputText value='Bienvenue #{fournisseurBean.login}' />
    Si l'authentification est réussie, je souhaite sauvegarder le nom d'utilisateur stocké dans la variable login dans la session pour devenir accessible par les autres beans, mais quand j'ai fait affichage le contenue de variable login du FournisseurBean, il n'affiche rien pour le login de l'utilisateur connecté

  6. #6
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Ben, il est où l'utilisateur en question?

    Je n'y vois pas de Personne current, ni de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
    dont tu puisses récupérer le login pour le stoker quelque part...

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    c'est peut-être que tu n'as pas rafraichi cet élément dans la page (via "update" pour Primefaces)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Bonjour,

    Y a plus que ça...

    D'écrire une méthode public String authentification() et d'y vérifier un mot de passe hard codé: ça il faut le faire!
    Un Utilisateur (Fournisseur ou autre) devrait être déclaré et initialisé quelque part, puis comparé lors de l'authentification
    à un objet Utilisateur ramené d'une base de données par une recherche (paramétrée) par critères comme le login et le mot de passe.

    Aucun des beans (implémentant Serializable) ne possède un constructeur.

    private List<Fournisseur> listFournisseur est null mais ça déjà a moins d'importance...

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mishulyna Voir le message
    Bonjour,

    Y a plus que ça...

    D'écrire une méthode public String authentification() et d'y vérifier un mot de passe hard codé: ça il faut le faire!
    Un Utilisateur (Fournisseur ou autre) devrait être déclaré et initialisé quelque part, puis comparé lors de l'authentification
    à un objet Utilisateur ramené d'une base de données par une recherche (paramétrée) par critères comme le login et le mot de passe.

    Aucun des beans (implémentant Serializable) ne possède un constructeur.

    private List<Fournisseur> listFournisseur est null mais ça déjà a moins d'importance...
    Dans l'absolu, on ne sait pas pourquoi la question est posée, donc le côté hard codé n'est pas forcément problématique, il pourrait s'agir d'un test de la couche jsf ;-)
    Pour le constructeur (et pour info), il n'est pas obligatoire
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    ... il pourrait s'agir d'un test de la couche jsf ;-)
    Zut, je n'avais pas pensé à ça! Sorry...

Discussions similaires

  1. Déconnexion dans JSF (fermer session )
    Par berber5 dans le forum JSF
    Réponses: 2
    Dernier message: 09/04/2012, 10h18
  2. JSF et session-timeout
    Par meryazer dans le forum JSF
    Réponses: 0
    Dernier message: 05/05/2010, 18h34
  3. JSF et session timeout
    Par xvolte dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 22/09/2008, 10h25
  4. [JSF] Forward session
    Par bleach1234 dans le forum JSF
    Réponses: 3
    Dernier message: 07/08/2008, 21h32
  5. [JSF] Durée des sessions
    Par bslota dans le forum JSF
    Réponses: 1
    Dernier message: 18/01/2006, 10h04

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