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.

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);
		}
 
	}
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
 
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 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()...

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 ?