2009-05-29 55 views
1

爲我服務的代碼如下...方法@Secured應該拋出錯誤時沒有用戶身份驗證

@Controller 
@GwtRpcEndPoint 
public class ServerServiceImpl implements ServerService { 

    @org.springframework.security.annotation.Secured("ROLE_ADMIN") 
    public String runGwtSprMvcHibJpaDemo(String s) { 


     System.out.println("SecurityContextHolder.getContext()="+SecurityContextHolder.getContext()); 
     System.out.println("SecurityContextHolder.getContext().getAuthentication()="+SecurityContextHolder.getContext().getAuthentication()); 
    } 

} 

我的applicationContext.xml

<security:global-method-security secured-annotations="enabled" jsr250-annotations="disabled" /> 

但是當我打電話serviceImpl通過gwt- rpc,沒有運行GwtSprMvcHibJpaDemo應該打印出安全錯誤,因爲用戶還沒有通過身份驗證?相反,該方法runGwtSprMvcHibJpaDemo與輸出

SecurityContextHolder.getContext()[email protected]ff: Null authentication SecurityContextHolder.getContext().getAuthentication()=null 

回答

1

執行添加

<security:http auto-config="true"> 
     <security:intercept-url pattern="/**" access="ROLE_ADMIN" /> 
</security:http> 

到你的XML配置,看看能否解決。

0

在喜歡你的Spring上下文定義的bean:

豆ID = 「的UserDetailsS​​ervice 」 類=「 packagename.MyUserService」>。

請注意,bean名稱應該完全相同。 Spring在內部使用這個bean來啓動這個服務。

MyUserService是UserDetailsS​​ervice的實現。