2010-09-02 55 views
0

我有使用PayloadRootAnnotationMethodEndpointMapping有几个拦截一个Spring-WS服务:春-WS SecurityInterceptor操作水平

<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">   
    <property name="interceptors"> 
     <list> 
      <ref local="loggingInterceptor"/> 
      <ref local="validatingInterceptor"/> 
      <ref local="securityInterceptor"/> 
     </list> 
    </property>  
</bean> 

securityIntercetorWss4jSecurityInterceptor拦截。

一切工作正常,除了securityIntercetor是在@Endpoint级别,我希望它在@PayloadRoot(操作)。

我对用户进行身份验证的方式是使用UsernameToken,然后我违背LDAP并获取角色,并根据角色我想允许/禁止用户执行操作。

我认为这不是一个开箱即用的解决方案。

所以我的问题是:如何在securityIntercetor我可以得到什么操作被调用,所以我可以检查取决于我的设置,以允许或不执行特定的操作。

或者您可能有其他想法。

谢谢。

回答

1

有没有这样做的标准方式。我所做的是我创建了另一个拦截器(并首先将其放置在被调用的拦截器列表中),这将保存当前操作,然后当Spring命中我的安全拦截器时,我将从请求作用域bean这是我的第一个拦截器创建的。