Bonjour,

J'utilise Spring Security et Spring MVC, tout deux en version 3.

Mon problème est le suivant :

Dans le handler utilisé par Spring Security pour renvoyer à l'utilisateur la page d'erreur de login, j'aimerais rediriger la HttpServletRequest (à laquelle j'y ajoute un attribut) et la HttpServletResponse de manière à ce que Spring MVC les traitent avec un controleur dédié.

Pour faire ça, j'ai donc utilisé le forwarding, mais à l'exécution, lorsque je fais une erreur de login, le serveur utilisé, Jetty, me dit que la page en question est introuvable :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Problem accessing /spring-app/loginFailure.action. Reason:
 
    NOT_FOUND
Pourtant, cette même page est accessible et s'affiche lorsqu'on l'appelle directement depuis le navigateur.

Voici le code du handler mentionné ci-dessus :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
public class CustomAuthenticationFailureHandler implements AuthenticationFailureHandler
{
	public void onAuthenticationFailure(HttpServletRequest request,HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException
	{
		if(exception instanceof CustomAuthenticationException)
		{
			request.setAttribute("authentication", exception.getAuthentication());
			request.getRequestDispatcher("/loginFailure.action").forward(request,response);
		}
	}
}
et le code du controleur :

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
 
	@RequestMapping(value="/loginFailure.action")
	public String getLoginFailure(HttpServletRequest request)
	{
		Object o = request.getAttribute("authentication");
 
		if(o instanceof Authentication)
		{
			Authentication authentication = (Authentication) o;
			String login = (String)authentication.getPrincipal();
			String password = (String)authentication.getCredentials();
 
			// ...
		}
 
		return "login";
	}
Merci !