Printemps de Sécurité personnalisé d'échec de l'authentification gestionnaire de redirection avec le paramètre
J'ai un problème avec le Printemps de Sécurité de l'échec de l'authentification gestionnaire de redirection avec le paramètre.
En sécurité config quand j'utilise
failureUrl("/login.html?error=true")
il fonctionne. Mais quand j'utilise l'authentification personnalisée échec gestionnaire (comme illustré ci-dessous), elle revient toujours: url/login.html
getRedirectStrategy().sendRedirect(request, response, "/login.html?error=true");
ou
response.sendRedirect(request.getContextPath() + "/login.html?error=true");
Je ne sais pas quoi de mal. Pourquoi ne pas afficher le paramètre ?error=true
?
Info: je suis à l'aide de Printemps + JSF + Hibernate + Ressort de Sécurité
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login.html")
.usernameParameter("j_username")
.passwordParameter("j_password")
.loginProcessingUrl("/j_spring_security_check")
.failureHandler(customAuthenticationFailureHandler)//.failureUrl("/login.html?error=true")//.successHandler(authSuccsessHandler)
.defaultSuccessUrl("/dashboard.html")
.permitAll()
.and()
.logout()
.invalidateHttpSession(true)
.logoutSuccessUrl("/")
.permitAll()
.and()
.exceptionHandling()
.accessDeniedPage("/access.html")
.and()
.headers()
.defaultsDisabled()
.frameOptions()
.sameOrigin()
.cacheControl();
http
.csrf().disable();
}
C'est la coutume d'échec de l'authentification gestionnaire:
@Component
public class CustomAuthFailureHandler extends SimpleUrlAuthenticationFailureHandler {
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException, ServletException {
getRedirectStrategy().sendRedirect(request, response, "/login.html?error=true");
}
}
Je vais changer de paramètre pour certains cas.
Cette réponse pourrait être utile stackoverflow.com/questions/17199423/...
OriginalL'auteur mstykt | 2017-05-08
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas autoriser l'accès anonyme à l'URL
/login.html?error=true
, de sorte que vous êtes redirigé vers la page de connexion (/login.html
).AbstractAuthenticationFilterConfigurer#permitAll
permet d'accéder (par personne) à l'échec de l'URL mais pas pour coutume de défaillance du gestionnaire:Vous devez autoriser l'accès explicitement avec
AbstractRequestMatcherRegistry#antMatchers
:et
ExpressionUrlAuthorizationConfigurer.AuthorizedUrl#permitAll
:Vous n'avez pas à permettre à l'URL exacte
/login.html?error=true
, parce queAntPathRequestMatcher
ignore la requête chaîne:Vos modifications de configuration:
C'est juste une manière de soutenir des stratégies différentes. La valeur par défaut est DefaultRedirectStrategy Il calcule la droite de l'URL.
OriginalL'auteur dur