Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer un espace membre avec un Filtre

Sujet résolu
    22 avril 2015 à 13:54:19

    Bonjour à tous , j'ai suivi le tuto Médéric Munier dont lequel il a expliqué le fonctionnement des Filtes, il a créé  un dossier dans le WebContent portant le nom de restreint il contient l'ensemble des pages jsp qui doivent pas être accessible sans avoir s’authentifier. voici le code de déclaration dans le web.xml
    ...
    
    <filter>
    	<filter-name>RestrictionFilter</filter-name>
    	<filter-class>com.sdzee.filters.RestrictionFilter</filter-class>
    </filter>
    <filter-mapping>
    	<filter-name>RestrictionFilter</filter-name>
    	<url-pattern>/restreint/*</url-pattern>
    </filter-mapping>
    
    ...
    moi ce que je veux faire, c'est de créer ce dossier dans le WEB-INF, du coup j'ai changé le code par celui la :  
    ...
    
    <filter>
    	<filter-name>RestrictionFilter</filter-name>
    	<filter-class>com.sdzee.filters.RestrictionFilter</filter-class>
    </filter>
    <filter-mapping>
    	<filter-name>RestrictionFilter</filter-name>
    	<url-pattern>/WEB-INF/restreint/*</url-pattern>
    </filter-mapping>
    
    ...

    lorsque j'exécute l'application, même sans avoir authentifier j'accède toujours aux pages du dossier restreint. Comment puis-je créer un espace membre sachant que tout les jsp doivent être déclarer dans le WEB-INF ? 

    Merci pour votre aide :) 

       

    • Partager sur Facebook
    • Partager sur Twitter
      22 avril 2015 à 16:28:12

      Bonjour.

      Le paramètre url-pattern correspondant à l'URL sur ton site (Exemple : http://www.toto.con/restreint/...) et non par rapport à l'arborescence de tes fichiers .jsp.

      Ensuite il faut voir le code source de ton Filter.

      Commence par mettre à mettre un point d'arrêt dans ton filter pour vérifier qu'il est bien invoqué sur les bonnes URL.

      • 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)
        22 avril 2015 à 19:34:12

        Merci Pinguet62 de m'avoir répondu.

        Comme vous le savez si on veux accéder par exemple à l'url : http://www.tuto.com/home , ici home est la servlet qui correspond à la page home.jsp par exemple. Maintenant imaginez que je veux que la page home soit accessible à tout le monde et que monPanier et  mesProduits sont deux servlets qui correspond à deux pages jsp dont  l'accès est réservé  aux membres qui sont connectés au site, comme vous venez de dire  url-pattern correspond à l'URL du site et non à l'arborescence de des fichiers .jsp, en gros si j'ai bien compris je doit restreindre l'accès aux servlets et non aux pages jsp, dans ce cas, comment je  vais déclarer le code du Filter dans le web.xml ?

        • Partager sur Facebook
        • Partager sur Twitter
          23 avril 2015 à 19:28:40

          Si je ne dis pas de bêtise :

          • Les Servlet
            Premièrement tu déclares tes Servlets : nom et classe
            Ensuite tu associes des Servlet à des URL.
            Lors du chargement d'un URL, Java va appeler la classe correspondante.
          • Les filtres
            Premièrement tu définies des filtres : nom et classe
            <filter>
                <filter-name>RestrictionFilter</filter-name>
                <filter-class>com.sdzee.filters.RestrictionFilter</filter-class>
            </filter>
            Ensuite tu associes des filtres à des URL :
            <filter-mapping>
                <filter-name>RestrictionFilter</filter-name>
                <url-pattern>/restreint/*</url-pattern>
            </filter-mapping>
            Ici par exemple, le chargement de la page http://www.toto.con/restreint/mon-panier passera par ton filtre com.sdzee.filters.RestrictionFilter

          A aucun moment moment les pages .jsp n'interviennent dans le web.xml.
          Le seul lien entre les .jsp est au niveau de la Servlet, lorsque tu "forward" la requète vers ta JSP comme ceci :

          RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/toto.jsp");
          dispatcher.forward(request, response);
          • 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)
            24 avril 2015 à 13:15:36

            Bonjour, 

            merci pour cette explication, au fait l'erreur est dans la déclaration de la servlet au lieu de faire 

            <url-pattern>/restreint/monPanier</url-pattern>  

            j'ai fais 

            <url-pattern>monPanier</url-pattern>

            c'est pour ça que le filter ne marche pas 

            • Partager sur Facebook
            • Partager sur Twitter

            Créer un espace membre avec un 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