Utilisatation d'un filtre en JSF
Salut Tous le monde.
J'ai Un petit Souci concernant l'utilisation d'un filtre afin de restreidre l'accès direct à mes pages JSF de sorte qu'elle ne soit accessible qu'après authentification.
J'ai ajouter une classe qui implemente javax.servlet.filter.
voila le contenu de cette classe :
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
package com.project.filter;
import java.io.IOException;
import javax.faces.context.FacesContext;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
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 com.project.managedbean.AuthentificationBean;
public class FIlterConnexion implements javax.servlet.Filter {
protected ServletContext servletContext;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletResponse res = (HttpServletResponse) response;
HttpServletRequest req=(HttpServletRequest)request;
// HttpSession session =
// ((HttpServletRequest)request).getSession(false);
// AuthentificationBean currentUser = (AuthentificationBean)session.getAttribute("LoginBean");
//
// if(currentUser==null){
//
//
// res.sendRedirect(req.getContextPath() + "/denied.xhtml") ;
//
// }
// else
// {
// chain.doFilter(request,response);
// }
//
AuthentificationBean bean = (AuthentificationBean) FacesContext.getCurrentInstance().getCurrentInstance()
.getExternalContext().getSessionMap().get("LoginBean");
String loginSession=bean.getLogin();
if(loginSession==null)
{
res.sendRedirect(req.getContextPath() + "/denied.xhtml") ;
}
else
{
chain.doFilter(request, response);
}
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
servletContext = filterConfig.getServletContext();
}
} |
mais au moment ou j'essaie d'accéder à mes pages une erreur apparait :
java.lang.NullPointerException
at com.project.filter.FIlterConnexion.doFilter(FIlterConnexion.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
De plus comme toutes ma pages sont située dans un dossier pages
dans webapp,comment je pourrais epargner la page login pour qu'elle ne soit pas intercepté par le filtre???
:calim2: J'ai besoin d'un coup de main SVP.