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
| package fr.msw.filter;
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import fr.epide.utils.AbstractInformation;
import fr.msw.abs.AbstractUser;
/**
* @author MOI
*Filtre de rédirection à la page de connexion si perte de session
*/
public class TimeoutFilter extends AbstractInformation implements Filter{
private static final String TIMOUT_PAGE = "pages/login.jsf";
private static final String LOGIN_PAGE = "pages/login.jsf";
/*
*
*/
@Override
public void destroy() {
// TODO Auto-generated method stub
}
/**
*
*/
@Override
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;
if (checkResource(hRequest)) {
if (checkSession(hRequest)) {
String timeoutUrl = hRequest.getContextPath() + "/" + TIMOUT_PAGE;
log.info(getClassName(), "doFilter", "Session is invalid! redirecting to timeoutpage : {}");
hResponse.sendRedirect(timeoutUrl);
return;
}
if (hRequest.getSession(false) != null) {
HttpSession session = hRequest.getSession(false);
AbstractUser aUser = (AbstractUser)session.getAttribute("currentUser");
if (aUser == null) {
String timeoutUrl = hRequest.getContextPath() + "/" + TIMOUT_PAGE;
log.info(getClassName(), "doFilter", "Session is invalid! redirecting to timeoutpage : {}");
hResponse.sendRedirect(timeoutUrl);
}
}
}
}
filterChain.doFilter(request, response);
}
@SuppressWarnings("cast")
private boolean checkResource(HttpServletRequest request) {
String requestPath = request.getRequestURI();
HttpServletRequest hRequest = (HttpServletRequest) request;
log.debug(getClassName(), "checkResource", requestPath);
//log.debug("reqPath={}", requestPath);
return !(requestPath.contains(TIMOUT_PAGE) ||
requestPath.contains(LOGIN_PAGE) ||
requestPath.equals(hRequest.getContextPath() + "/"));
}
private boolean checkSession(HttpServletRequest request) {
return request.getRequestedSessionId() != null
&& !request.isRequestedSessionIdValid();
}
/**
*
*/
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
} |
Partager