Partage
  • Partager sur Facebook
  • Partager sur Twitter

impossible de récupérer le bean dans mon filtre

Sujet résolu
    27 avril 2016 à 10:06:36

    Bonjour,

    depuis que j'ai rajouté un filtre, je dois me logger avant de pouvoir consulter chaque page de mon application web.

    pourtant le filtre doit récupérer le bean crée lors du loggin et ne pas me redemander le loggin.

    voici le code du filtre

    @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            
            // Get the login from session attribute
            HttpServletRequest req = (HttpServletRequest) request;
            HttpSession session = req.getSession();
            //Loggin loggin = (Loggin) session.getAttribute("loggin");
            BeanLoggin beanLoggin = (BeanLoggin)session.getAttribute("beanLoggin");
    
            
            if ( beanLoggin==null || !beanLoggin.getTestLoggin() ) {
               String contextPath = ((HttpServletRequest)request).getContextPath();
                ((HttpServletResponse)response).sendRedirect(contextPath + "/faces/loggin.xhtml"); 
                
            }else{
                chain.doFilter(request, response);
            }    
            
        }



    voici les techno utilisées:

    - Netbeans 8

    - JSF2.2

    - wildfly 8

    • Partager sur Facebook
    • Partager sur Twitter
      27 avril 2016 à 10:56:10

      Salut, 

      Pourrais-tu montrer le bout de code où tu créer beanLoggin?

      • Partager sur Facebook
      • Partager sur Twitter
        27 avril 2016 à 11:09:56

        Bonjour.

        Il existe le scope @SessionScoped pour ne pas avoir à écrire/lire dans les sessions de la ServletRequest.

        • Partager sur Facebook
        • Partager sur Twitter
        Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
          28 avril 2016 à 9:33:02

          Bonjour,

          voici le code du bean

          package com.webapplicationbook.ejb;
          
          import com.webapplicationbook.helper.HelperLoggin;
          import com.webapplicationbook.pojo.Loggin;
          import javax.inject.Named;
          import javax.enterprise.context.SessionScoped;
          import java.io.Serializable;
          import java.util.List;
          import javax.faces.context.FacesContext;
          import javax.servlet.http.HttpSession;
          
          /**
           *
           * @author
           */
          @Named(value = "beanLoggin")
          @SessionScoped
          public class BeanLoggin implements Serializable {
          
              HelperLoggin helper;
              private List<Loggin> list;
              private Loggin l;
              private boolean testLoggin;
              private String message;
                 
              /**
               * Creates a new instance of BeanLoggin
               */
              public BeanLoggin() {
                  helper = new HelperLoggin();
                  l = new Loggin();
                  setTestLoggin(false);
                 
              }
              
              private void listOfLoggin(){
                  list = helper.listLoggin();
          
              }
              
              public String checkLoggin(){
                      
                  if( findLoggin()){
                      /*FacesContext facesContext = FacesContext.getCurrentInstance();
                      HttpSession session = (HttpSession) 
                              facesContext.getExternalContext().getSession(true);
                      session.setAttribute("bean", l);*/
                      //session.setAttribute("loggin", l);
          
                      return "/faces/private/index";
                  }else{
                      setMessage("erreur de loggin");
                      return "/faces/loggin";
                  }
                  
              }
             
              
              
              private boolean findLoggin(){
                  listOfLoggin();
                  for( Loggin loggin : list){
                      if((loggin.getUser().equalsIgnoreCase(l.getUser())) && 
                              ((loggin.getPassword().equalsIgnoreCase(l.getPassword())))){
                          setTestLoggin(true);
                          return true;
                      }
                  }
                  return false;
                              
              }
              
              
          
              public Loggin getL() {
                  return l;
              }
          
              public void setL(Loggin l) {
                  this.l = l;
              }  
          
              /**
               * @return the message
               */
              public String getMessage() {
                  return message;
              }
          
              /**
               * @param message the message to set
               */
              public void setMessage(String message) {
                  this.message = message;
              }
          
              /**
               * @return the testLoggin
               */
              public boolean getTestLoggin() {
                  return testLoggin;
              }
          
              /**
               * @param testLoggin the testLoggin to set
               */
              public void setTestLoggin(boolean testLoggin) {
                  this.testLoggin = testLoggin;
              }
              
              public String logout(){
                  FacesContext facesContext = FacesContext.getCurrentInstance();
                      HttpSession session = (HttpSession) 
                              facesContext.getExternalContext().getSession(true);
                  session.invalidate();
                  setTestLoggin(false);
                  return "/faces/loggin";
              }
              
          }
          

          Pinguet62, j'utilise l'annotation @SessionScoped

          merci pour aide

          • Partager sur Facebook
          • Partager sur Twitter
            3 mai 2016 à 9:25:51

            Pigquet62, ce que tu veux me dire c'est avec la notation @SessionScope je n'ai pas besoins du code suivant dans mon filtre

            HttpServletRequest req = (HttpServletRequest) request;
                    HttpSession session = req.getSession();

            je ne suis pas sur d'avoir compris.

            • Partager sur Facebook
            • Partager sur Twitter
              3 mai 2016 à 9:38:10

              Le @SessionScoped permet de stocker le Bean en session.

              C'est JSF qui s'en charge.
              Tu n'as donc pas besoin d'accéder manuellement à la session via HttpServletRequest.getSession().

              • Partager sur Facebook
              • Partager sur Twitter
              Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                4 mai 2016 à 10:47:54

                ok , c'est noté merci pour ta réponse.

                mais comment récupérer alors la session en cours dans mon filtre?

                • Partager sur Facebook
                • Partager sur Twitter
                  4 mai 2016 à 11:04:04

                  @WebFilter
                  class Toto implements Filter {
                  	@Inject UserBean bean;
                  
                  	@Override  
                  	public void doFilter(...) throws ... {  
                  		...
                  	}
                  
                  	...
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                    10 mai 2016 à 9:31:14

                    Hello Pinguet62,

                    nickel avec l'injection je peux récupérer mon bean dans le code du filtre.

                    je test mon application avant de poster résolu

                    merci

                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 mai 2016 à 9:34:47

                      Hello tous le monde

                      nickel l'application est ok maintenant.

                      merci pour votre aide.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      impossible de récupérer le bean dans mon filtre

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown