J'ai pour le controle de l'acces aux pages de mon site creer un Filtre de Servlet, qui donc effectue quelques vérifications avant d'autiriser ou non la visite de tel ou tel page web.
Le problème est au niveau du renvoi d'erreur que j'essayais de faire comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { System.out.println("Youhou"); HttpSession session = null; try { /*On verifie que l'user est authentifié (presence de son objet en Session)*/ session = haveSession((HttpServletRequest) req); /*On recupère l'URI demandé*/ String URI = ((HttpServletRequest)req).getRequestURI(); //On teste si la variable personne qui doit être ds la session est un User ou un Admin if(session.getAttribute("personne") instanceof User){ isUserPage(URI); } else if (session.getAttribute("personne") instanceof Admin) { isAdminPage(URI); } chain.doFilter(req,res); } catch (IllegalArgumentException e) { envoiErreur.sendLoginError((HttpServletRequest)req,(HttpServletResponse)res,EnvoiErreur.SESSION_ERROR); } catch (IdentificationException e) { envoiErreur.sendError((HttpServletRequest)req,(HttpServletResponse)res,EnvoiErreur.RESTRICT_ERROR,null); } }
Or il n'est pas possible de renvoyer une page directement à partir du filtre, il faut utiliser un ResponseWrapper que l'on passera dans le chain.doFilter()...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void sendError(HttpServletRequest req, HttpServletResponse res, String errorType, String optionnalText) throws IOException{ HttpSession s = req.getSession(true); s.setAttribute("errorMessage",errorType); s.setAttribute("option",optionnalText); res.sendRedirect(res.encodeRedirectURL("pages/error.jsp")); }
Or j'ai beau avoir lu le tutoriel de sun dessus, je ne comprend vraiment pas comment ecrire mon responseWrapper afin qu'au final cela renvoi ma page d'erreur avec le message d'erreur.
Quelqu'un pourrait t'il m'aider dans l'ecriture de cette classe ?
Partager