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 :
Pourtant, cette même page est accessible et s'affiche lorsqu'on l'appelle directement depuis le navigateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Problem accessing /spring-app/loginFailure.action. Reason: NOT_FOUND
Voici le code du handler mentionné ci-dessus :
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 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); } } }
Merci !
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"; }
Partager