2013-02-02 38 views
6

trong ứng dụng web mùa xuân của tôi, tôi muốn để có được một người dùng xác thực trong điều khiển của tôi:Xuân An getPrincipal() phương thức trả về anonymousUser

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

Nhưng giá trị của hiệu trưởng là "anonymousUser" mặc dù tôi đã loged trong thế nào. tôi có thể có được một người dùng được xác thực không? cấu hình của tôi trong mùa xuân-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

Những URL mà bạn đã yêu cầu khi bạn đã "anonymousUser"? –

+0

http: //localhost/test.html – Igorock

+0

SS nên hoạt động như thế nào ở đây? Bạn đã cấu hình nó để chỉ chặn '/ welcome *' ... –

Trả lời

4

Không chắc tôi hiểu nhưng cố gắng này

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

cảm ơn bạn rất nhiều vì ý tưởng này! nó hoạt động cho tôi, nhưng với truy cập = "ROLE_USER, ROLE_ANONYMOUSLY" thay vì truy cập = "IS_AUTHENTICATED, IS_AUTHENTICATED_ANONYMOUSLY" – Igorock

+0

@Ukrainianguy, vui vì nó hoạt động, hãy xem xét chấp nhận câu trả lời. 'ROLE_ANONYMOUSLY' không chính xác, nó là' ROLE_ANONYMOUS'. Cho dù bạn cần kiểm tra 'ROLE_' hoặc' IS_' phụ thuộc vào ngữ cảnh. Về mặt kỹ thuật chỉ có sự khác biệt nhỏ giữa hai. –

+0

chắc chắn, ROLE_ANONYMOUS là chính xác – Igorock

Các vấn đề liên quan