Problème de filtres avec JSF
Bonjour à tous, je suis vraiment coincé avec un problème lié aux filtres.
En j'ai mis en place une classe LoginFilter comme décrit ci-dessous:
Code:
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
|
<div style="margin-left:40px">
package gct.dao.servlets;
import java.io.IOException;
import javax.faces.application.ResourceHandler;
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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet Filter implementation class LoginFilter
*/
@WebFilter("/*")
public class LoginFilter implements Filter {
private static final String AJAX_REDIRECT_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<partial-response><redirect url=\"%s\"></redirect></partial-response>";
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)res;
HttpSession session=request.getSession(false);
String loginURI=request.getContextPath()+"login.xhtml";
boolean loggedIn=(session!=null)&&(session.getAttribute("user")!=null);
boolean loginRequest=request.getRequestURI().equals(loginURI);
boolean resourceRequest=request.getRequestURI().startsWith(request.getContextPath()+ResourceHandler.RESOURCE_IDENTIFIER+ "/");
boolean ajaxRequest = "partial/ajax".equals(request.getHeader("Faces-Request"));
if(loggedIn||loginRequest||resourceRequest){
if (!resourceRequest) { // Prevent browser from caching restricted resources.
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
}
chain.doFilter(request, response);
}
else if(ajaxRequest){
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
response.getWriter().printf(AJAX_REDIRECT_XML, loginURI);
}
else{
response.sendRedirect(loginURI);
}
}
public void init(FilterConfig config) throws ServletException {
}
}
</div> |
En fait dès que je mets la ligne @WebFilter("/*") et que je tente d'accéder au lien localhost:8088/GestionTaches/user.xhtml alors le navigateur me redirige vers ce lien qui est localhost:8088/GestionTacheslogin.xhtml qui me pose problème.
Je sollicite votre aide cordialement merci!
Problème de filtres avec JSF
Merci bien ta solution marche bien!Bonne journée