Spring-Sicherheit: Programmatisch anmelden

8

Wir entwickeln eine mobile App mit jQuery mobile und möchten den Benutzer programmatisch auf einem Spring 3.1.x-Backend authentifizieren, das korrekt mit Federsicherheit eingerichtet wurde.

Eine POST-Anfrage wird an das Backend gesendet (mit jQuery's $ .post), das einen Benutzernamen und ein Passwort enthält, der Server überprüft dann, ob die Zugangsdaten korrekt sind und meldet den Benutzer an.

Der Server scheint die Authentifizierung in SecurityContext korrekt zu setzen. Wenn wir jedoch eine zweite Anfrage an den Server richten (ein $ .get an eine Seite, die eine Anmeldung erfordert), scheinen die Sicherheitsdetails nicht gespeichert zu sein und ein anonymer Token scheint in dem Kontext zu sein.

Dies ist die Methode im Controller, die die Anmeldung durchführt (die Kennwortprüfung wurde aus Platzgründen entfernt):

%Vor%

Dies ist die andere Methode, bei der wir die Benutzerdetails aus dem Kontext herausholen:

%Vor%

Spring Sicherheitskonfiguration:

%Vor%

Dies sollte gemäß der Frühjahrssicherheitsdokumentation und anderen Online-Ressourcen funktionieren. Irgendwelche Ideen, was könnte falsch sein?

    
geoffreydv 30.05.2012, 07:15
quelle

1 Antwort

11

Ich bin verwirrt von Ihrer Konfiguration. Sie haben Ihren eigenen Login-Controller implementiert, aber Sie scheinen den Formular-Login von Spring Security zu verwenden. Ich habe kürzlich Ajax Login mit Spring Security + jquery implementiert. Anstatt meinen eigenen Controller zu schreiben, implementierte ich einfach meinen eigenen AuthenticationSuccessHandler und AuthenticationFailureHandler, um die benötigten JSON-Antworten zurückzugeben. Erweitern Sie einfach SimpleUrlAuthenticationSuccessHandler und SimpleUrlAuthenticationFailureHandler, um die Methoden onAuthenticationSuccess und onAuthenticationFailure in jeder Klasse zu überschreiben, etwas so einfaches wie ...

%Vor%

Dann können Sie das Formular-Login-Element mit etwas wie ...

konfigurieren %Vor%     
hyness 05.06.2012, 15:35
quelle