方法@Secured应该在没有用户进行身份验证时抛出错误

时间:2009-05-29 15:51:25

标签: spring gwt spring-mvc spring-security

我的服务代码如下......

@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" />

但是当我通过gwt-rpc调用serviceImpl时,不是runGwtSprMvcHibJpaDemo应该打印出安全错误,因为用户尚未通过身份验证?而是使用输出

执行runGwtSprMvcHibJpaDemo方法
 SecurityContextHolder.getContext()=org.springframework.security.context.SecurityContextImpl@ffffffff: Null authentication  SecurityContextHolder.getContext().getAuthentication()=null

2 个答案:

答案 0 :(得分:1)

添加

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

到您的xml配置,看看是否修复了它。

答案 1 :(得分:0)

在弹簧上下文中定义bean,如:

  

bean id =“ userDetailsS​​ervice ”   类= “packagename.MyUserService” &GT;

请注意,bean名称应该是完全相同的。 Spring在内部使用此bean来启动此服务。

MyUserService是UserDetailsS​​ervice的实现。