J'ai des formulaires de connexion dans des fenêtres modales. Une fois la connexion établie, l’utilisateur est redirigé vers la page /
. J'essaie de trouver une méthode pour rester sur la page de contact ou une autre page après la connexion. Comment faire ça? Mon code est:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/css/**","/js/**","/fonts/**","/images/**","/home","/","/kontakt").permitAll()
.antMatchers("/userlist").hasRole("ADMIN")
.anyRequest().authenticated();
http
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/");
}
Vous pouvez utiliser custom AuthenticationSuccessHandler
et définir useReferer
à true
.
@Bean
public AuthenticationSuccessHandler successHandler() {
SimpleUrlAuthenticationSuccessHandler handler = new SimpleUrlAuthenticationSuccessHandler();
handler.setUseReferer(true);
return handler;
}
Et dans votre méthode configure
:
http
.formLogin()
.loginPage("/login")
.successHandler(successHandler())
.permitAll()
.and()
Juste pour fournir une solution alternative:
formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
defaultSuccessUrl
est un raccourci pour ajouter la SuccessHandler
personnalisée.
Vous pouvez également le faire dans votre implémentation AuthenticationSuccessHandler
:
@Override
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication authentication) throws
IOException, ServletException
{
//Do your logic;
response.sendRedirect(request.getHeader("referer");
}
J'ai eu un problème étrange qui aurait provoqué la redirection de l'utilisateur sur localhost:8080/js/bootstrap.min.js
lors de la connexion
Si quelqu'un d'autre rencontre une redirection étrange lors de la connexion, qui semble remplacer la .defaultSuccessUrl()
, essayez d'ajouter ce code ci-dessous dans SecurityConfig
:
@Override
public void configure(WebSecurity security){
security.ignoring().antMatchers("/css/**","/images/**","/js/**");
}
Ajoutez tous vos dossiers Resources/static
à la antMatchers()