2013-06-19 10 views
5

Ich googelte und versuchte viele Varianten für einige Stunden, aber ohne Erfolg. Bitte helfen Sie mir, eine Lösung zu finden.Federsicherung 3.1. benutzerdefinierte Authentifizierung-Fehler-URL mit URL-Parametern

Frühling Version: Frühling 3.1

Ich habe Seite einloggen. Login-Seite ist abhängig von URL-Parameter:

/login?code=client1 

oder

/login?code=client2 

So client1 und client2 unterschiedliche Login-Seiten.

security.xml:

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

Also, wenn Benutzer falsche Authentifizierung machen Ich zeige ihm/Login-Seite ... Aber Punkt ist, ich habe Login-Seite zu zeigen, mit Code-Parameter entspricht.

Was soll ich tun? Haben Sie bitte einige Beispiele?

Vielen Dank für den Fortschritt.

UPDATE # 1:

I FailureHandler Klasse erstellt:

public class GRSAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler implements AuthenticationFailureHandler { 

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

} 

} 

Was soll ich innen schreiben, um benötigte URL zu erhalten umleiten? Bitte, wenn Sie mir mehr Details geben können.

Vielen Dank!

Antwort

6

Sie könnten die 10 verwenden und eine andere RedirectStrategy implementieren, die zur konfigurierten URL umleitet und die ursprüngliche Abfragezeichenfolge der umgeleiteten URL hinzufügt.

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); 
    } 

} 


Authentifizierungsfehler-Handler Konfigurationen

<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, danke. Und letzte blöde Frage: Wie sollte ich die Strategie mit meinem Handler verknüpfen? – mad

+0

Gibt es eine einfache Möglichkeit, eine Auth-Ausnahme zu erhalten? Ich habe verschiedene Ausnahmen und verschiedene entsprechende Informationen, die dem Benutzer angezeigt werden. Soll ich meinen Handler erstellen und die saveException() -Methode überschreiben? Danke noch einmal. – mad

+0

funktioniert nicht auf Feder-Sicherheit 4.0.3, request.getQueryString() ist immer Null –