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

Servlets/JSP Java Discussion :

Java Session multiple


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut Java Session multiple
    Bonjour à tous,

    j'ai une classe
    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
    public String seConnecter() {
            User user = adminService.getUser(nummat);
            if (user == null) {
                MessagesJsf.addErrorMessage("Le login n'est pas correct");
                return null;
            }
            if (!password.equals(user.getPassword())) {
                MessagesJsf.addErrorMessage("Le mot de passe n'est pas correct");
                return null;
            }
            this.setUserConnecte(user);
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(
                    Params.AUTH_KEY, nummat);
            login = null;
            password = null;
            return "home";
        }
    via laquelle un utilisateur se connecte à l'application.
    Le filtre correspondant est le suivant:
    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
    public class AuthenticationFilter implements Filter {
     
        private FilterConfig config;
     
        public FilterConfig getConfig() {
            return config;
        }
     
        public void setConfig(FilterConfig config) {
            this.config = config;
        }
     
        @Override
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
     
            HttpServletRequest request = (HttpServletRequest) req;
            if (request.getSession().getAttribute(Params.AUTH_KEY) == null) {
                ((HttpServletResponse) resp).sendRedirect(request.getContextPath() + "/faces/login.xhtml");
            } else {
                chain.doFilter(req, resp);
            }
        }
     
        @Override
        public void init(FilterConfig config) throws ServletException {
            this.config = config;
        }
     
        @Override
        public void destroy() {
            config = null;
        }
     
    }
    Et ça marche!
    Mon probleme c'est quand un user est déjà connecté, un autre ne peut se connecter. Je m'explique: quand un user1 se connecte et que un user2 veut se connecter à partir d'une autre machine, l'application montre l'accueil avec le user déjà connecté. Et user2 doit deconnecter user1 pour pouvoir se connecter.

    Quelqu'un a-t-il une idée sur comment je dois proceder pour rendre mon appli multi-utilisateurs?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ben t'évite de stocker des trucs dans l'application scope ou dans des variables static et ça ne devrait pas poser des soucis. Maintenant avec les quelque framents de code que t'as mis on peux pas te dire exactement où est ton erreur, on ne sais pas d'où sortent tes méthodes, comment les beans sont configurés, qu'est-ce qui se passe.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut
    Bonjour tchize_ et merci d'avoir répondu.

    Voici mes deux classes au complet:
    La classe connexionBean
    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
     
    import com.talbus.data.admin.User;
    import com.talbus.service.AdminService;
    import com.talbus.util.MessagesJsf;
    import com.talbus.util.Params;
    import java.io.Serializable;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import javax.faces.context.FacesContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
     
    @ManagedBean(name = "connexionBean")
    @SessionScoped
    @Component("connexionBean")
    public class ConnexionView extends TalbusView implements Serializable {
     
        private static final long serialVersionUID = 1L;
     
        private String login;
        private String service;
        private String nummat;
        private String password;
     
        @Autowired
        private AdminService adminService;
     
        public String getLogin() {
            return login;
        }
     
        public void setLogin(String login) {
            this.login = login;
        }
     
        public String getService() {
            return service;
        }
     
        public void setService(String service) {
            this.service = service;
        }
     
        public String getNummat() {
            return nummat;
        }
     
        public void setNummat(String nummat) {
            this.nummat = nummat;
        }
     
        public AdminService getAdminService() {
            return adminService;
        }
     
        public void setAdminService(AdminService adminService) {
            this.adminService = adminService;
        }
     
        public String getPassword() {
            return password;
        }
     
        public void setPassword(String password) {
            this.password = password;
        }
     
        public String seConnecter() {
            User user = adminService.getUser(nummat);
            if (user == null) {
                MessagesJsf.addErrorMessage("Le login n'est pas correct");
                return null;
            }
            if (!password.equals(user.getPassword())) {
                MessagesJsf.addErrorMessage("Le mot de passe n'est pas correct");
                return null;
            }
            this.setUserConnecte(user);
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(
                    Params.AUTH_KEY, nummat);
            login = null;
            password = null;
            return "home";
        }
     
     
     
        public String deconnect() {
            HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
            HttpSession session = request.getSession();
            session.invalidate();
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(Params.AUTH_KEY);
            this.setUserConnecte(null);
            return "login";
        }
     
        @Override
        protected void cleanUp() {
     
        }
    }
    et la classe AuthenficationFilter
    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
     
     
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class AuthenticationFilter implements Filter {
     
        private FilterConfig config;
     
        public FilterConfig getConfig() {
            return config;
        }
     
        public void setConfig(FilterConfig config) {
            this.config = config;
        }
     
        @Override
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
     
            HttpServletRequest request = (HttpServletRequest) req;
            if (request.getSession().getAttribute(Params.AUTH_KEY) == null) {
                ((HttpServletResponse) resp).sendRedirect(request.getContextPath() + "/faces/login.xhtml");
            } else {
                chain.doFilter(req, resp);
            }
        }
     
        @Override
        public void init(FilterConfig config) throws ServletException {
            this.config = config;
        }
     
        @Override
        public void destroy() {
            config = null;
        }
     
    }
    Merci encore

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je ne vois rien que forcerait un partage de session. C'est reproductible ton problème? Faut décrire un peu plus ce qui se passe, parce que là il y a juste un marqueur dans la session, rien de transcendant et aucune raison que ce soit partagé entre deux browsers différents.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut
    Merci tchize_,

    voilà, je viens de modifier ma servlet mais il n'y a aucun changement
    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 LoginServlet extends HttpServlet {
     
        private static final long serialVersionUID = 1L;
     
        @Override
        protected void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
     
            String login = request.getParameter("login");
            String password = request.getParameter("password");
     
            if (!login.isEmpty() && !password.isEmpty()) {
                User currentUser = new User();
                currentUser.setLogin(login);
                currentUser.setPassword(password);
     
                request.getSession().setAttribute("user", currentUser);
                request.getRequestDispatcher("accueil.xhtml").forward(request, response);
     
            } else {
                response.sendRedirect("login.xhtml");
            }
     
        }
     
    }
    mon web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <servlet>
            <servlet-name>AuthentificationView</servlet-name>
            <servlet-class>com.util.LoginServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>AuthentificationView</servlet-name>
            <url-pattern>/AuthentificationView</url-pattern>
        </servlet-mapping>
    et mon bean de connexion
    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
    @ManagedBean(name = "connexionBean")
    @SessionScoped
    @Component("connexionBean")
    public class ConnexionView extends TalbusView implements Serializable {
     
        private static final long serialVersionUID = 1L;
     
        private String login;
        private String service;
        private String nummat;
        private String password;
     
        @Autowired
        private AdminService adminService;
     
        public String getLogin() {
            return login;
        }
     
        public void setLogin(String login) {
            this.login = login;
        }
     
        public String getService() {
            return service;
        }
     
        public void setService(String service) {
            this.service = service;
        }
     
        public String getNummat() {
            return nummat;
        }
     
        public void setNummat(String nummat) {
            this.nummat = nummat;
        }
     
        public AdminService getAdminService() {
            return adminService;
        }
     
        public void setAdminService(AdminService adminService) {
            this.adminService = adminService;
        }
     
        public String getPassword() {
            return password;
        }
     
        public void setPassword(String password) {
            this.password = password;
        }
     
        public String seConnecter() {
            User user = adminService.getUser(nummat);
            if (user == null) {
                MessagesJsf.addErrorMessage("Le login n'est pas correct");
                return null;
            }
            if (!password.equals(user.getPassword())) {
                MessagesJsf.addErrorMessage("Le mot de passe n'est pas correct");
                return null;
            }
            this.setUserConnecte(user);
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(
                    Params.AUTH_KEY, nummat);
            login = null;
            password = null;
            return "home";
        }
    je continue de voir le meme user connecté à partir d'autres navigateurs

  6. #6
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Envoie le code de TalbusView, je pense que le problème vient de là

    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
    public String seConnecter() {
            User user = adminService.getUser(nummat);
            if (user == null) {
                MessagesJsf.addErrorMessage("Le login n'est pas correct");
                return null;
            }
            if (!password.equals(user.getPassword())) {
                MessagesJsf.addErrorMessage("Le mot de passe n'est pas correct");
                return null;
            }
            this.setUserConnecte(user);
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(
                    Params.AUTH_KEY, nummat);
            login = null;
            password = null;
            return "home";
        }

    Autre détail : quand tu renvoies un message d'erreur à la connexion, indique toujours "login ou mot de passe incorrect" plutôt de dire lequel des deux est incorrect (sinon on peut dire si un login existe ou pas, ce qui augmente les chances de pouvoir se connecter en faisant une attaque de type force brute)
    Je ne suis pas mort, j'ai du travail !

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut
    Merci pour le conseil eulbobo, c'est très pertinent. J'en tiendrai compte. Voici la classe
    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
    @ManagedBean(name = "talbusBean")
    @SessionScoped
    public abstract class TalbusView implements Serializable{
     
        private static final long serialVersionUID = 1L;
     
        protected abstract void cleanUp();
        private User userConnecte;
     
        public String quitter(){
            cleanUp();
            return "param";
        }
     
        public String home(){
            cleanUp();
            return "home";
        }
     
        public User getUserConnecte() {
            return userConnecte;
        }
     
        public void setUserConnecte(User userConnecte) {
            this.userConnecte = userConnecte;
        }
    }

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu peux montrer ce code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adminService.getUser(nummat);
    adminService, il est session scope, request scope, application scope?

    j'ai du mal à voir comment ta servlet login entre dans le jeu de quilles.

    Et il n'y a pas d'authentification dans cette servlet, je vois juste un check "password!=null"

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut
    Bonjour,
    voici mes classes; pour une bonne lisibilité je les ai construites comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface AdminService extends TalbusService {
     
        //------------user
            public User getUser(String id);
    public User getUserConnect(String username, String password);
    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
    @Service("adminService")
    public class AdminServiceImpl extends TalbusCrudImpl implements AdminService {
     
        @Autowired
        private AdminDao adminDao;
     
            @Override
        public User getUser(String id) {
            return adminDao.getUser(id);
        }
     
        @Override
        public User getUserConnect(String username, String password) {
            return adminDao.getUserConnect(username, password);
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public interface AdminDao extends TalbusCrud {
     
        //--------------------users
            public User getUser(String id);
     
        public User getUserConnect(String username, String password);
    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
    @Repository("adminDao")
    public class AdminDaoImpl extends TalbusCrudImpl implements AdminDao {
     
     
        @Override
        public User getUser(String id) {
            List<User> list = em.createQuery("SELECT c FROM User c "
                    + "WHERE c.nummat=:id ")
                    .setParameter("id", id)
                    .getResultList();
            if (list == null || list.isEmpty()) {
                return null;
            }
     
            return list.get(0);
        }
     
        @Override
        public User getUserConnect(String username, String password) {
            List<User> list = em.createQuery("SELECT u FROM User u WHERE u.nom = :username AND u.password = :password")
                    .setParameter("username", username)
                    .setParameter("password", password)
                    .getResultList();
            if (list == null || list.isEmpty()) {
                return null;
            }
     
            return list.get(0);
        }

  10. #10
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Je ne vois rien non plus qui pourrait entraîner une rétention de session.

    C'est déployé sur quel serveur d'application? Et les tests sont faits sur quels navigateurs?
    Ca donne aussi le même résultat si depuis un même poste tu essayes de te connecter à ton application avec différents navigateurs? (IE/Firefox/Chrome)


    Test à faire : se déconnecter complètement, lancer plusieurs navigateurs, aller sur la page d'accueil sur tous les navigateurs, se connecter depuis un seul, et aller voir si les autres sont connectés aussi.
    Je ne suis pas mort, j'ai du travail !

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut
    Bonjour eulbobo,
    c'est déployé sur tomcat et j'utilise Firefox comme navigateur. Et oui, quelque soit le navigateur (sur une autre machine) ça donne le meme résultat.

    J'ai vais effectuer les tests que vous avez dits, et vous tiendrai au courant.

    A+

  12. #12
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut
    A partir du même poste, sur des navigateurs différents ça donne le meme resultat!

    j'ai effectué le test: j'ai ouvert deux navigateurs (IE/Firefox) sans me connecter, donc la page de login s'est affiché sur les deux. Je me suis connecté avec le premier; sur le deuxième c'était toujours la page de login qui s'affichait...mais dès que j'ai essayé de connecter un 2e user c'est le premier user (du 1er navigateur) qui s'est affiché sur la page d'accueil.

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu peux rajouter un @scope("session") sur ton admin service et ton admin dao?

  14. #14
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    tu peux rajouter un @scope("session") sur ton admin service et ton admin dao?
    Ils sont stateless, donc je ne pense pas que ça aide...
    Si ça corrige, je me coupe un attribut viril.


    Par contre, mettre des attributs @ManagedBean(name = "talbusBean") et @SessionScoped sur une classe abstraite, j'ai un doute... Si la classe est abstraire, tu ne pourras jamais en récupérer une instance par le nom... Et le scope devrait être porté par les classes filles...


    Il n'y aurait pas d'autres annotations sur tes classes mères?
    Je ne suis pas mort, j'ai du travail !

  15. #15
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut
    Si ça corrige, je me coupe un attribut viril.
    Bonjour eulbobo, pas besoin...puisque ça ne marche pas. ça me génère des erreurs.
    Il n'y aurait pas d'autres annotations sur tes classes mères?
    non je n'ai aucune annotation sur mes classes mères
    Par contre, mettre des attributs @ManagedBean(name = "talbusBean") et @SessionScoped sur une classe abstraite, j'ai un doute... Si la classe est abstraire, tu ne pourras jamais en récupérer une instance par le nom... Et le scope devrait être porté par les classes filles
    et j'ai enlevé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @ManagedBean(name = "talbusBean") et @SessionScoped

  16. #16
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Citation Envoyé par faon114 Voir le message
    Bonjour eulbobo, pas besoin...puisque ça ne marche pas. ça me génère des erreurs.
    Ma barbe te remercie de me confirmer ça ^^ (ben quoi, à quoi vous pensiez?)
    Je vais essayer de creuser de mon côté pour essayer de voir dans quel cas on peut avoir un partage de session comme tu l'observes...
    Je ne suis pas mort, j'ai du travail !

  17. #17
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut
    Merci bien eulbobo, j'attends impatiemment ton retour. En attendant je creuse aussi de mon coté.

  18. #18
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par eulbobo Voir le message
    Ils sont stateless, donc je ne pense pas que ça aide...
    Arf, j'était persuadé d'avoir vu un setUser dedans . Toutes mes excuses.

    On pourrait peut être avoir le projet en .zip? ça permettrait de fouiller plus vite

  19. #19
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 41
    Points : 18
    Points
    18
    Par défaut
    Arf, j'était persuadé d'avoir vu un setUser dedans . Toutes mes excuses.
    You're welcome tchize_, tu as seulement voulu aider...pas de problème donc!
    Je crois que j'y ai mis tout ce qui intervient de près ou de loin dans le login.

    Merci encore
    Fichiers attachés Fichiers attachés

  20. #20
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    j'aurais préféré un projet que je puisse à minima démarrer pour commencer à analyser son comportement :/.


    Tu peux expliquer le lien entre LoginServlet et ConnexionView ?


    Je te proposerais d'afficher dans tes pages la plupart des objets que tu manipule (y compris les services & co), afin de voir les numéros d'instance et de repérer si un objet est commun ou si ce sont juste les données qui sont dupliquée. Affiche aussi les cookies de tes deux browser pour voir si rien n'est partagé. Au delà, je pense qu'il faudra le projet complet pour résoudre le mystère.

    Met aussi un breakpoint sur le constructeur de ton User afin de bien repérer tous les endroits où il est créé et avec quel paramètres.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/09/2009, 16h46
  2. [MySQL] Problème de sessions multiples ?
    Par gaucthier dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/04/2009, 17h30
  3. Sessions multiples
    Par aziz1986 dans le forum Langage
    Réponses: 8
    Dernier message: 18/03/2009, 23h48
  4. Sessions multiples et variables qui ne passent pas
    Par franz.moraine dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2008, 21h48
  5. [C#] Session, éviter le log multiple
    Par Procto dans le forum ASP.NET
    Réponses: 7
    Dernier message: 26/05/2005, 12h17

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