我有一项服务,
<bean id="myservicie" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service" ref="aService"/>
<property name="serviceInterface" value="com.statestr.oms.fx.ws.service.IService"/>
</bean>
在这个服务中,
@Secured ({"ROLE_USER"})
private void mythod(),
但它不起作用,
但是,如果我将此方法移动到另一个bean,例如mybean,安全注释将起作用,
我已经在下面的配置中启用了两个,有人可以帮忙吗?谢谢。
<global-method-security secured-annotations="enabled" access-decision-manager-ref="accessDecisionManager">
<protect-pointcut expression="execution(* *..com.statestr.oms.service.impl.*Mybean*.*(..))" access="ROLE_USER"/>
<protect-pointcut expression="execution(* *..com.statestr.oms.service.impl.*Service*.*(..))" access="ROLE_USER"/>
</global-method-security>
答案 0 :(得分:3)
我想这是因为您的应用程序使用Spring Proxy AOP。如果直接调用该方法(来自同一个bean),则此AOP样式没有影响。我认为这就是你所做的,因为你提到的方法是私有方法。
所以你可以做的是:
无论如何,您的配置看起来有点奇怪 - 为什么您对同一个类使用@Secured
AND <protect-pointcut...
?其中一个应该就够了。