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 :

Filtre login ne fonctionne pas correctement


Sujet :

JSF Java

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 50
    Points
    50
    Par défaut Filtre login ne fonctionne pas correctement
    bonjour,
    J'ai implémenté un filtre pour sécuriser mon application web (jsf).lorsque je click run sur mon fichier login.xhtml ça fonctionne à merveille et ça me permet de rejoindre mon application.mais par contre si je lance directement une autre page *.html, le système fait une redirection vers la page login.xhtml mais la page n'est pas affiché correctement( toute la partie primefaces et jsf ne s'affiche pas).je n'arrive pas à determiner l'erreur puisque j'ai pas d'erreurs dans mes logs apache tomcat

    voici mes fichiers:

    web.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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>
        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
     
        <!-- ############################################# -->
        <!-- # File upload                                      # -->
        <!-- ############################################# -->
        <filter>
            <filter-name>PrimeFaces FileUpload Filter</filter-name>
            <filter-class>
                org.primefaces.webapp.filter.FileUploadFilter
            </filter-class>
            <init-param>
                <param-name>thresholdSize</param-name>
                <param-value>51200</param-value>
            </init-param>
            <!-- Optional 
           <init-param>
               <param-name>uploadDirectory</param-name>
               <param-value>/var/bcom/temp</param-value>
           </init-param>
            -->
        </filter>
     
        <filter-mapping>
            <filter-name>PrimeFaces FileUpload Filter</filter-name>
            <servlet-name>Faces Servlet</servlet-name>
        </filter-mapping>
     
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
     
            <url-pattern>/faces/*</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>login.xhtml</welcome-file>
        </welcome-file-list>
       
            
    </web-app>

    login.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
    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
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"  
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:p="http://primefaces.org/ui">
        <h:head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <meta name="description" content="Reflect Template" />
            <title> Login Page</title>
     
            <script type='text/javascript' src='js/jquery.js'></script>
            <script type='text/javascript' src='js/jquery-ui.js'></script>
            <script type='text/javascript' src='js/jquery.wysiwyg.js'></script>
            <script type='text/javascript' src='js/custom.js'></script>
        </h:head>
        <h:body class="nobackground">
          <!--  <div id="login">-->
          <center>
            	<h1 class="logo">
                	<a href="">le texte fonctionne masi pas le primefaces et jsf</a>
                </h1>
          </center>
            <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
            <center>
                <h:form id="loginForm"  >          
                    <p:growl id="msg" showDetail="true" life="3000" />
     
                        <p:panel header="Login" style="width: 360px;alignment-adjust: true ">
     
                            <h:panelGrid id="loginPanel" columns="2" style="border-color: 0xffgg; margin: 200,200,50,100">
     
                                <h:outputText value="Username" />
     
                                <p:inputText id="username" value="#{loginBean.uname}" ></p:inputText>
     
                           <!--     <p:spacer></p:spacer> -->
     
                                <p:message for="username" ></p:message>
     
                                <h:outputText value="Password" />
     
                                <p:password id="password" value="#{loginBean.password}"  feedback="false"></p:password>
     
                          <!--      <p:spacer></p:spacer> -->
     
                                <p:message for="password"></p:message>
     
                           <!--     <p:spacer></p:spacer> -->
     
                                <p:commandButton action="#{loginBean.login}" value="Login" update="loginForm" ajax="true"></p:commandButton> 
     
                            </h:panelGrid>
     
                        </p:panel>
     
                </h:form>
            </center>
    <!--        </div> -->
        </h:body> 
     
    </html>

    filter.java


    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
    package filters;
    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.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
    @WebFilter(filterName = "AuthFilter", urlPatterns = {"*.xhtml"})
    public class AuthFilter implements Filter {
     
        public AuthFilter() {
        }
     
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
     
        }
     
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
             try {
     
                // check whether session variable is set
                HttpServletRequest req = (HttpServletRequest) request;
                HttpServletResponse res = (HttpServletResponse) response;
                HttpSession ses = req.getSession(false);
                //  allow user to proccede if url is login.xhtml or user logged in or user is accessing any page in //public folder
                String reqURI = req.getRequestURI();
                if ( reqURI.indexOf("/login.xhtml") >= 0 || (ses != null && ses.getAttribute("username") != null)
                                           || reqURI.indexOf("/public/") >= 0 || reqURI.contains("javax.faces.resource") )
                       chain.doFilter(request, response);
                else   // user didn't log in but asking for a page that is not allowed so take user to login page
                       res.sendRedirect(req.getContextPath() + "/login.xhtml");  // Anonymous user. Redirect to login page
          }
         catch(Throwable t) {
             System.out.println( t.getMessage());
         }
        } //doFilter
     
        @Override
        public void destroy() {
     
        }
    }

    faces-config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version='1.0' encoding='UTF-8'?>
    <faces-config version="2.0"
        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_2_0.xsd">
        <navigation-rule>
            <from-view-id>/login.xhtml</from-view-id>
            <navigation-case>
                <from-outcome>home</from-outcome>
                <to-view-id>/home.xhtml</to-view-id>
            </navigation-case>
        </navigation-rule>
    </faces-config>
    je travaille sous netbeans 7.3, jdk 1.6 et tomcat 7

    merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 100
    Points : 161
    Points
    161
    Par défaut
    tu px tester ça vite fait en ajoutant un return après la sendRedirect,
    si ça marche pas, fait un retour et je regarde demain si je vois autre choses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String reqURI = req.getRequestURI();
                if ( reqURI.indexOf("/login.xhtml") >= 0 || (ses != null && ses.getAttribute("username") != null)
                                           || reqURI.indexOf("/public/") >= 0 || reqURI.contains("javax.faces.resource") )
                       chain.doFilter(request, response);
                else  { // user didn't log in but asking for a page that is not allowed so take user to login page
                       res.sendRedirect(req.getContextPath() + "/login.xhtml"); 
                       return ;
                      }

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par ghiwani80 Voir le message
    tu px tester ça vite fait en ajoutant un return après la sendRedirect,
    si ça marche pas, fait un retour et je regarde demain si je vois autre choses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String reqURI = req.getRequestURI();
                if ( reqURI.indexOf("/login.xhtml") >= 0 || (ses != null && ses.getAttribute("username") != null)
                                           || reqURI.indexOf("/public/") >= 0 || reqURI.contains("javax.faces.resource") )
                       chain.doFilter(request, response);
                else  { // user didn't log in but asking for a page that is not allowed so take user to login page
                       res.sendRedirect(req.getContextPath() + "/login.xhtml"); 
                       return ;
                      }


    merci pour votre réponse mais j'ai toujours le mème problème ( tout le coté primefaces et form ne marche pas)

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 100
    Points : 161
    Points
    161
    Par défaut
    Je viens de tester ton code, ça marche très bien,
    http://localhost:8080/JSF2-pf-spring.../accueil.xhtml
    et http://localhost:8080/JSF2-pf-spring...te/login.xhtml, dans les deux cas je suis redirigé vers la page login qui affiche le formulaire.

    qu'est ce que tu vx dire avec "toute la partie primefaces et jsf ne s'affiche pas" ??

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par ghiwani80 Voir le message
    Je viens de tester ton code, ça marche très bien,
    http://localhost:8080/JSF2-pf-spring.../accueil.xhtml
    et http://localhost:8080/JSF2-pf-spring...te/login.xhtml, dans les deux cas je suis redirigé vers la page login qui affiche le formulaire.

    qu'est ce que tu vx dire avec "toute la partie primefaces et jsf ne s'affiche pas" ??
    dans la page login.xhtml , il ya un grand titre et au milieu de la page j'ai deux inputtext pour login et mot de passe. ces 2 inputtext ne s'affichent pas si j'essais de rejoindre une autre page autre que la page de login

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 100
    Points : 161
    Points
    161
    Par défaut
    siiiii, le deux inputs et le texte s affiche tres bien dans les deux cas, tu dois avoir juste un problème dans ta configuration

Discussions similaires

  1. [OpenOffice][Tableur] [Seven, Calc 3.2.0]Filtre ne fonctionne pas correctement
    Par Filippo dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 08/05/2010, 11h51
  2. Réponses: 7
    Dernier message: 23/08/2008, 11h34
  3. [MySQL] Mon code ne fonctionne pas correctement
    Par bebas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/02/2007, 13h27
  4. Le débogage ne fonctionne pas correctement
    Par BNS dans le forum Visual C++
    Réponses: 4
    Dernier message: 13/07/2006, 13h59
  5. Réponses: 13
    Dernier message: 31/08/2005, 14h03

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