2013-02-02 1 views
6

in meiner Feder Webapplikation Ich möchte einen authentifizierten Benutzer in meinem Controller bekommen:Spring Security getPrincipal() Methode gibt AnonymousUser

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 

Aber der Wert des Haupt ist "AnonymousUser" obwohl ich in loged haben Wie. kann ich einen authentifizierten Benutzer erhalten? Meine Konfigurationen im Frühjahr security.xml:

<http auto-config="true" request-matcher="regex"> 
    <intercept-url pattern="/welcome*" access="ROLE_USER" /> 
    <form-login login-page="/login" default-target-url="/welcome" 
     authentication-failure-url="/loginfailed" /> 
    <logout logout-success-url="/logout" /> 
</http> 
+0

Welche URL haben Sie erhalten, wenn Sie „AnonymousUser“ bekommen? –

+0

http: //localhost/test.html – Igorock

+0

Wie soll SS hier ins Spiel kommen? Sie haben es so konfiguriert, dass es nur '/ welcome *' abfängt. –

Antwort

4

nicht sicher, ob ich verstehen, aber versuchen, diese

<http auto-config="true" request-matcher="regex"> 
    <intercept-url pattern="/welcome*" access="ROLE_USER" /> 
    <intercept-url pattern="/*" access="IS_AUTHENTICATED,IS_AUTHENTICATED_ANONYMOUSLY"/> 
+0

vielen Dank für die Idee! es funktioniert für mich, aber mit access = "ROLE_USER, ROLE_ANONYMOUSLY" anstelle von access = "IS_AUTHENTICATED, IS_AUTHENTICATED_ANONYMOUSLY" – Igorock

+0

@Ukrainianguy, froh, dass es funktioniert, in Betracht ziehen, die Antwort zu akzeptieren. 'ROLE_ANONYMOUSLY' ist nicht korrekt, es ist' ROLE_ANONYMOUS'. Ob Sie nach 'ROLE_' oder' IS_' suchen müssen, hängt vom Kontext ab. Technisch gibt es nur geringe Unterschiede zwischen den beiden. –

+0

sicher, ROLE_ANONYMOUS ist korrekt – Igorock