2013-02-02 46 views
6

रिटर्न मेरी वसंत वेब अनुप्रयोग में मैं अपने नियंत्रक में एक प्रमाणीकृत उपयोगकर्ता प्राप्त करना चाहते हैं:स्प्रिंग सुरक्षा getPrincipal() विधि anonymousUser

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

लेकिन प्राचार्य के मूल्य हालांकि मैं में loged है "anonymousUser" है कैसे। क्या मुझे एक प्रमाणित उपयोगकर्ता मिल सकता है? वसंत-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

कौन से URL आप अनुरोध किया था जब आप "anonymousUser" मिल गया? –

+0

http: //localhost/test.html – Igorock

+0

एसएस को यहां कैसे खेलना चाहिए? आपने इसे केवल '/ स्वागत *' ... –

उत्तर

4

सुनिश्चित नहीं हैं कि मैं समझता हूँ, लेकिन कोशिश यह

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

इस विचार के लिए बहुत बहुत धन्यवाद! यह मेरे लिए काम करता है, लेकिन एक्सेस = "ROLE_USER, ROLE_ANONYMOUSLY" एक्सेस के बजाय = "IS_AUTHENTICATED, IS_AUTHENTICATED_ANONYMOUSLY" – Igorock

+0

@Ukraineguy, खुशी है कि यह काम करता है, जवाब स्वीकार करने पर विचार करें। 'ROLE_ANONYMOUSLY' सही नहीं है, यह' ROLE_ANONYMOUS' है। चाहे आपको 'ROLE_' या 'IS_' की जांच करने की आवश्यकता हो, संदर्भ पर निर्भर करता है। तकनीकी रूप से दोनों के बीच केवल मामूली अंतर हैं। –

+0

यकीन है, ROLE_ANONYMOUS सही है – Igorock