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 :

comment utiliser un filtre?


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut comment utiliser un filtre?
    bonjour,

    je veux faire un filtre mais toujours pas encore...

    j'ai declare une class filter et j'ai ajouté le code au web.xml.

    et toujours il y a probleme.

    svp pouvez vous me donner sur les etapes pour reussir à utiliser un filtre qui teste sur le user et le mot de passe pour proteger l'application contre l'acce directe.

    merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    Voila comme je l'utilise :

    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
    54
    	<filter>
       	<filter-name>AuthentificationFilter</filter-name>
    	   <filter-class>com.prylos.yapps.filters.AuthentificationFilter</filter-class>
    	    <init-param>
    		  <param-name>EXCEPTION_URL_0</param-name>
    		  <param-value>login.faces</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>EXCEPTION_URL_1</param-name>
    		  <param-value>index</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>EXCEPTION_URL_2</param-name>
    		  <param-value>top.jsp</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>EXCEPTION_URL_3</param-name>
    		  <param-value>error.jsp</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>EXCEPTION_URL_4</param-name>
    		  <param-value>errorpage_root.jsp</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>EXCEPTION_URL_5</param-name>
    		  <param-value>errorpage.jsp</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>EXCEPTION_URL_6</param-name>
    		  <param-value>download/jadfile.jsp</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>EXCEPTION_URL_7</param-name>
    		  <param-value>download/jarfile.jsp</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>FOLDER_EXCEPTION_URL_1</param-name>
    		  <param-value>images</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>FOLDER_EXCEPTION_URL_2</param-name>
    		  <param-value>services</param-value>		  
    	   </init-param>
    	   <init-param>
    		  <param-name>AUTORISATIONFAILED_URL</param-name>
    		  <param-value>login.faces</param-value>		  
    	   </init-param>	 
    	</filter>
     
     
          <filter-mapping>
          <filter-name>AuthentificationFilter</filter-name>
          <url-pattern>/index.faces</url-pattern>
       </filter-mapping>
    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
    105
    106
    107
    108
     
    public class AuthentificationFilter implements Filter {
     
    	/**
             * Represents the list of exceptions url.
             */
    	private static List<String> exceptionsURL = new ArrayList();
    	private static List<String> foldersURL = new ArrayList();
    	private static String defaultURL = "login.faces";
    	private static String endSessionURL = "/error.faces";
    	public static final String DEFAULT_EXCEPTION_URL_PREFIX = "EXCEPTION_URL";
    	public static final String DEFAULT_FOLDER_EXCEPTION_URL_PREFIX = "FOLDER_EXCEPTION_URL";
    	public static final String DEFAULT_AUTORISATIONFAILED_URL = "AUTORISATIONFAILED_URL";
     
    	private static Log log = LogHelper.getLog(AuthentificationFilter.class);
     
    	/*
    	 * (non-Javadoc)
    	 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
    	 */
    	public void init(FilterConfig filterConfig) throws ServletException {
    		Enumeration enumeration = filterConfig.getInitParameterNames();
    		log.info("Read Exception URL : ");
    		while (enumeration.hasMoreElements()){
    			String parameterName = (String) enumeration.nextElement();
    			String parameterValue = filterConfig.getInitParameter(parameterName);
    			if(parameterName.startsWith(DEFAULT_EXCEPTION_URL_PREFIX)){
    				parameterValue = formatURL(parameterValue);
    				exceptionsURL.add(parameterValue);
    				log.info("Exception URL :" + parameterValue);
    			}
    			if(parameterName.startsWith(DEFAULT_FOLDER_EXCEPTION_URL_PREFIX)){
    				parameterValue = formatURL(parameterValue);
    				foldersURL.add(parameterValue);
    				log.info("Exception folders URL :" + parameterValue);
    			}
    		}
    		String value = filterConfig.getInitParameter(DEFAULT_AUTORISATIONFAILED_URL);
    		if(value!=null && value.length() > 0) {
    			defaultURL = value;
    		}
    		defaultURL = formatURL(defaultURL);
    		exceptionsURL.add(defaultURL);
    		log.debug("Default URL :" + defaultURL);
    	}
    	/*
    	 * (non-Javadoc)
    	 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
    	 */
    	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    		doFilter((HttpServletRequest)servletRequest, (HttpServletResponse) servletResponse, filterChain);
    	}
    	private String formatURL(String URL) {
    		String result = URL;
    		if(URL.startsWith("./")) {
    			result = URL.substring(1);
    		} else {
    			if(!URL.startsWith("/")){
    				result = "/"+URL;
    			}
    		}
    		return result;
    	}
    	/**
             * This method is used in order to check the user authentification. 
             * @param servletRequest HttpServletRequest
             * @param servletResponse HttpServletResponse
             */
    	private void doFilter(HttpServletRequest servletRequest, HttpServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    		String currentURL = formatURL(servletRequest.getServletPath());
    		boolean redirect = false;
    		log.info("Current Request URL :" + currentURL);
    		if(exceptionsURL.contains(currentURL)){
    			redirect = true;
    		} else {
    			log.debug("Check folder exception");
    			int index;
    			if( (index = currentURL.indexOf("/",1)) != -1 ){
    				String folder = currentURL.substring(0,index);
    				log.debug("Current folder :"+folder);
    				if(foldersURL.contains(folder)){
    					redirect = true;
    				}
    			}
    			log.debug("Get the current session");
    			HttpSession session = servletRequest.getSession(true);		
    			if(!session.isNew() && session.getAttribute("visit") != null) {
    				log.debug("The current session have a connected user");
    				redirect = true;
    			} else {
    				log.debug("The current session is new or have not a connected user");
    			}
    		}
    		if(redirect){
    			log.info("redirect");
    			filterChain.doFilter(servletRequest, servletResponse);	
    		} else {
    			log.debug("Redirect : "+servletRequest.getContextPath()+endSessionURL);
    			servletResponse.sendRedirect(servletRequest.getContextPath()+endSessionURL);
    		}
    	}
    	/*
    	 * (non-Javadoc)
    	 * @see javax.servlet.Filter#destroy()
    	 */
    	public void destroy() {
    		exceptionsURL.clear();
    	}
    Bon je t 'ai mis ça un peu en vrac.
    Bon donc en gros dans init je crée la liste des exceptions URL (définis dans le web.xml. Ce sont les url pur lequelles je n'effectue pas les tests du filtre).

    Apres dans dofilter ce qui est intéressant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if(redirect){
    			log.info("redirect");
    			filterChain.doFilter(servletRequest, servletResponse);	
    		} else {
    			log.debug("Redirect : "+servletRequest.getContextPath()+endSessionURL);
    			servletResponse.sendRedirect(servletRequest.getContextPath()+endSessionURL);
    		}
    Je pense que c'est cela le qui t'interesse. Apres pour definir redirect c'est à toi de voir (dans ton cas tu vas récupéré login et pass dans ton bean de session : HttpSession session = servletRequest.getSession(true);
    session.get("nom de mon bean");

    Et puis aprés tu vas tester si le login et pass sont toujours bon
    )

  3. #3
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut
    merci beaucoup beaucoup,

    ça marché il manque "true" dans :HttpSession session = servletRequest.getSession(true);

    j'ai oublié de mettre le "true" ,c'est grace à toi j'ai reussi et encore merci.

  4. #4
    Membre averti
    Profil pro
    Chargé d’études
    Inscrit en
    Octobre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d’études

    Informations forums :
    Inscription : Octobre 2006
    Messages : 36
    Par défaut
    Oui, excellent exemple, j'avais justement besoin d'une gestion de fin de session pour mes pages JSF.
    Les filtres sont LA solution, plutôt que d'essayer de faire comme cela sur chaque page, à savoir:

    <c:if test='${sessionScope["user"]==null}'>
    <c:redirect url="index.jsp"/>
    </c:if>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 09h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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