Bonjour,
J'utilise un filtre dans mon application afin d'intercepter une connection closed.
Voici le source de mon filtre :
Le problème est dans l'appel de ma page de reconnexion.
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 public class TimeoutFilter implements Filter { private static final Logger log = LoggerFactory.getLogger("fr.tennis.jsf.utils.timeoutFilter"); private static final String TIMOUT_PAGE = "desactive.jsp"; private static final String LOGIN_PAGE = "connexion.jsp"; public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) { HttpServletRequest hRequest = (HttpServletRequest) request; HttpServletResponse hResponse = (HttpServletResponse) response; String path = hRequest.getContextPath(); System.out.println("request path " +path); if (checkResource(hRequest)) { String requestPath = hRequest.getRequestURI(); if (checkSession(hRequest)) { this.renvoiLogin(); return; } } filterChain.doFilter(request, response); } } /** * Vérification si c'est une page protégèe * Par défaut toutes les pages sont protègées sauf TIMOUT_PAGE et LOGIN_PAGE * @param request * @return */ private boolean checkResource(HttpServletRequest request) { String requestPath = request.getRequestURI(); log.debug("reqPath={}", requestPath); return !(requestPath.contains(TIMOUT_PAGE) || requestPath.contains(LOGIN_PAGE) || requestPath.equals(request.getContextPath() + "/")); } private boolean checkSession(HttpServletRequest request) { return request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid(); } public void destroy() { } public String renvoiLogin() { System.out.println("Début renvoiLogin"); System.out.println("Fin renvoiLogin" ); return "Reconnexion"; } }
le faces-config est celui-ci et normalement mon évenement Reconnexion doit renvoyer sur ma page desactive.jsp
Malheureusement il bloque : il affiche une page vide :
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 <!-- Pour la connexion --> <navigation-rule> <from-view-id>*</from-view-id> <navigation-case> <from-outcome>Reconnexion</from-outcome> <to-view-id>/desactive.jsp</to-view-id> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/connexion.jsp</from-view-id> <navigation-case> <from-outcome>Accepted</from-outcome> <to-view-id>/done.jsp</to-view-id> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/done.jsp</from-view-id> <navigation-case> <from-outcome>goToConnexion</from-outcome> <to-view-id>/connexion.jsp</to-view-id> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/desactive.jsp</from-view-id> <navigation-case> <from-outcome>goToConnexion</from-outcome> <to-view-id>/connexion.jsp</to-view-id> </navigation-case> </navigation-rule>
![]()
Partager