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";
}
} |