2013-06-19 17 views
5

Ho cercato su Google e ho provato molte varianti per alcune ore ma senza alcun successo. Per favore aiutami a trovare una soluzione. Versionespring security 3.1. autenticazione personalizzata-failure-url con parametri url

Primavera: Primavera 3.1

ho pagina di login. pagina di login dipende dal parametro URL:

/login?code=client1 

o

/login?code=client2 

Così client1 e Client2 ha diverse pagine di login.

security.xml:

<sec:form-login login-page="/login" default-target-url="/start" authentication-failure-url="/login"/> 

Quindi, se l'utente effettuare l'autenticazione sbagliato mostro lui/pagina di login ... Ma il punto è che devo dimostrare pagina di login con il parametro corrispondente codice.

Cosa devo fare? Hai esempi per favore?

Grazie mille per l'anticipo.

UPDATE # 1:

ho creato classe FailureHandler:

public class GRSAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler implements AuthenticationFailureHandler { 

@Override 
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) { 

} 

} 

Cosa devo scrivere dentro per ottenere reindirizzare all'URL necessario? Per favore, se puoi darmi maggiori dettagli.

Grazie mille!

risposta

6

È possibile utilizzare SimpleUrlAuthenticationFailureHandler e implementare un diverso RedirectStrategy che reindirizza all'URL configurato e aggiunge la stringa di query originale all'URL reindirizzato.

public class QueryStringPropagateRedirectStrategy extends DefaultRedirectStrategy { 

    public void sendRedirect(HttpServletRequest request, 
      HttpServletResponse response, String url) throws IOException { 
     String urlWithOriginalQueryString = url + "?" + request.getQueryString(); 
     super.sendRedirect(request, response, urlWithOriginalQueryString); 
    } 

} 


autenticazione configurazioni gestore fallimento

<bean id="authenticationFailureHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler"> 
    <property name="redirectStrategy" ref="queryStringPropagateRedirectStrategy" /> 
    <property name="defaultFailureUrl" value="/login" /> 
</bean> 

<bean id="queryStringPropagateRedirectStrategy" class="...QueryStringPropagateRedirectStrategy" /> 
+0

See, grazie. E l'ultima domanda stupida: come devo collegare la strategia al mio gestore? – mad

+0

Esiste un modo semplice per ottenere un'eccezione di autenticazione? Ho diverse eccezioni e diverse informazioni corrispondenti da mostrare all'utente. Devo creare il mio gestore e sovrascrivere il metodo saveException()? Grazie ancora. – mad

+0

non funziona su spring-security 4.0.3, request.getQueryString() è sempre nullo –

Problemi correlati