2013-02-02 21 views
6

w moim wiosennej aplikacji internetowych chcę uzyskać uwierzytelniony użytkownik w moim kontrolera:Wiosna Bezpieczeństwo getPrincipal() Metoda zwraca AnonymousUser

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

Ale wartość zleceniodawcy jest „AnonymousUser” Chociaż mam loged w Jak. czy mogę uzyskać uwierzytelnionego użytkownika? Moi konfiguracje na wiosnę-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

Który URL nie poprosić, kiedy dostał "AnonymousUser"? –

+0

http: //localhost/test.html – Igorock

+0

W jaki sposób SS powinno tu grać? Skonfigurowałeś go tak, aby przechwytywał tylko '/ welcome *' ... –

Odpowiedz

4

Nie wiem, rozumiem, ale spróbuj to

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

Dziękuję bardzo za pomysł! działa dla mnie, ale z dostępem = "ROLE_USER, ROLE_ANONYMOUSLY" zamiast dostępu = "IS_AUTHENTICATED, IS_AUTHENTICATED_ANONYMOUSLY" – Igorock

+0

@Ukrainianguy, cieszę się, że działa, rozważ zaakceptowanie odpowiedzi. 'ROLE_ANONYMOUSLY' nie jest poprawny, jest to' ROLE_ANONYMOUS'. To, czy chcesz sprawdzić "ROLE_" czy "IS_", zależy od kontekstu. Technicznie istnieją tylko drobne różnice między tymi dwoma. –

+0

Oczywiście, ROLE_ANONYMOUS jest poprawny – Igorock

Powiązane problemy