2016-03-27 14 views
6

Sto usando l'avvio a molla con la dipendenza da avvio-avvio-sicurezza.Come impostare il reindirizzamento dopo il login riuscito?

Ho un'applicazione che eseguirà correttamente l'accesso con le credenziali appropriate. Tuttavia, ogni volta che accedo, non vengo reindirizzato da nessuna parte. Come posso configurarlo?

Di seguito è la forma:

<form th:action="@{/login}" method="post"> 
     <div><label> User Name : <input type="text" name="username"/> </label></div> 
     <div><label> Password: <input type="password" name="password"/> </label></div> 
     <div><input type="submit" value="Sign In"/></div> 
</form> 

Ho provato a cambiare il th: tag azione di cui sopra, ma non ero in grado di arrivare ovunque con esso.

Il metodo MvcConfig è qui sotto:

public void addViewControllers(ViewControllerRegistry registry) { 
    registry.addViewController("/login").setViewName("login"); 
    registry.addViewController("/").setViewName("login"); 
} 

risposta

18

Definire il reindirizzamento dopo deve essere applicato sulla Primavera di sicurezza l'accesso, non Spring MVC.

Il th:action definisce l'endpoint Spring Security che elaborerà la richiesta di autenticazione. Non definisce l'URL di reindirizzamento. Fuori dagli schemi, Spring Boot Security ti fornirà l'endpoint /login. Per impostazione predefinita, Spring Security reindirizzerà dopo l'accesso alla risorsa protetta a cui hai tentato di accedere. Se si desidera reindirizzare sempre a un URL specifico, è possibile forzarlo tramite l'oggetto di configurazione HttpSecurity.

Supponendo che si stia utilizzando una versione recente di Spring Boot, si dovrebbe essere in grado di utilizzare JavaConfig.

Ecco un semplice exemple:

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    private UserService userService; 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     // the boolean flags force the redirection even though 
     // the user requested a specific secured resource. 
     http.formLogin().defaultSuccessUrl("/success.html", true); 
    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth.userDetailsService(userService); 
    } 
} 

prega di notare che è necessario definire un endpoint limitatore di coppia per servire contenuti per l'URL /success.html. Una risorsa statica disponibile per impostazione predefinita in src/main/resources/public/ farebbe il trucco a scopo di test. Personalmente, preferirei definire un URL protetto servito da un controller MVC Spring che serva contenuti con Thymeleaf. Non vuoi che nessun utente anonimo sia in grado di accedere alla pagina di successo. Thymeleaf come alcune funzionalità utili per interagire con Spring Security durante il rendering del contenuto HTML.

Cordiali saluti, Daniel

Problemi correlati