diff --git a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java index 22d3742..b8c0a5a 100644 --- a/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java +++ b/1.sources/MyHealth/src/managedbean/common/AuthorizationFilter.java @@ -4,7 +4,6 @@ package managedbean.common; import java.io.IOException; import javax.faces.application.FacesMessage; -import javax.faces.application.ViewExpiredException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -29,14 +28,25 @@ public class AuthorizationFilter implements Filter { } + private boolean isAJAXRequest(HttpServletRequest request) { + boolean check = false; + String facesRequest = request.getHeader("Faces-Request"); + if (facesRequest != null && facesRequest.equals("partial/ajax")) { + check = true; + } + return check; + } + @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletRequest req = null; + HttpServletResponse resp = null; try { - HttpServletRequest req = (HttpServletRequest) request; + req = (HttpServletRequest) request; String reqURI = req.getRequestURI(); - HttpServletResponse resp = (HttpServletResponse) response; + resp = (HttpServletResponse) response; HttpSession ses = req.getSession(false); // Para recursos publicos permitimos el acceso exista sesión o no. @@ -46,15 +56,15 @@ public class AuthorizationFilter implements Filter { return; } - // Sesión expirada - if (req.isRequestedSessionIdValid() == false && req.getRequestedSessionId() != null) { + if (this.isAJAXRequest(req) == true) { chain.doFilter(request, response); return; - //throw new ViewExpiredException("Session expired!", "error"); - //resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - //SessionUtils.addMessage(ses, FacesMessage.SEVERITY_ERROR, "Su sesión ha caducado", "Su sesión ha caducado, por favor inicie sesión de nuevo."); - //resp.sendRedirect(req.getContextPath() + "/error.xhtml?type=expired"); - //return; + } + + // Sesión expirada + if (req.isRequestedSessionIdValid() == false && req.getRequestedSessionId() != null) { + resp.sendRedirect(req.getContextPath() + "/error.xhtml?type=expired"); + return; } // Si el usuario está logeado comprobamos si está autorizado a ver la página solicitada. @@ -144,14 +154,14 @@ public class AuthorizationFilter implements Filter { } - resp.sendRedirect(req.getContextPath() + "/login.xhtml"); + resp.sendRedirect(req.getContextPath() + "/home.xhtml"); } catch (Exception e) { - System.out.println(e.getMessage()); + resp.sendRedirect(req.getContextPath() + "/error.xhtml"); } } @Override public void destroy() { - + System.out.println("Sessión destruida"); } }