2016-06-19 1 views
3

Je suis la configuration suivante pour ma sécurité:Redirect HTTPS échoue Spring Security

@Override 
     protected void configure(HttpSecurity http) throws Exception { 
     http 
       .authorizeRequests() 
        .antMatchers("/admin/**", "/registration/**").access("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')") 
        .anyRequest().permitAll() 
       .and() 
        .requiresChannel().anyRequest().requiresSecure() 
       .and() 
        .exceptionHandling().accessDeniedPage("/denied") 
       .and() 
        .formLogin() 
        .loginPage("/login") 
        .failureUrl("/error-login"); 
     } 

Maintenant problème est quand je déployer sur le serveur de production lorsque je tente demo.com ouvert ou http://demo.com ou combinaison de ces i obtenir trop de redirections et cela échoue.

On Chrome: ERR_TOO_MANY_REDIRECTS

Sur Firefox: La page ne réoriente correctement

En d'autres termes, il redirige jusqu'à ce qu'il échoue.

Un conseil sur ce qui pourrait ne pas être ici ou ce que je pourrais faire pour comprendre le problème?

EDIT 1:

demande Contrôleur

@Controller 
public class BaseController { 

    @RequestMapping(value = {"/", "/index"}) 
    public String home() { 
     return "index"; 
    } 
} 

Connexion: Aucune entrée (autres que la séquence standard bootup)

+0

A partir de cette configuration ne ressemble pas mal. Pourriez-vous publier votre journal des erreurs et le code de vos contrôleurs? Peut être qu'il y a quelque chose qui ne va pas. – Igor

+0

Le journal est vide et comme pour le contrôleur, reportez-vous à EDIT 1 – Aeseir

+0

Lorsque de tels problèmes se produisent, je recommande de définir le niveau d'enregistrement le plus bas possible et de relire pas à pas l'ensemble du processus avec le débogueur. – Igor

Répondre

1

Vous devez spécifier le mappage de port dans votre WebSecurityConfigurer avec le correspondant HTTP et les ports HTTPS de votre application:

@Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http 
      .authorizeRequests() 
       .antMatchers("/admin/**", "/registration/**").access("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')") 
       .anyRequest().permitAll() 
      .and() 
       .requiresChannel().anyRequest().requiresSecure() 
      .and() 
       .portMapper()    
       .http(8080).mapsTo(8443); 
      .and() 
       .exceptionHandling().accessDeniedPage("/denied") 
      .and() 
       .formLogin() 
       .loginPage("/login") 
       .failureUrl("/error-login"); 
    } 

http.portMapper().http(8080).mapsTo(8443) mappe votre port HTTP 8080 au port HTTPS 8443 pour effectuer correctement la redirection.

En savoir plus: