0

我有一个 Spring-WS 服务使用PayloadRootAnnotationMethodEndpointMapping它有几个拦截器:

<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>

securityIntercetor是一个Wss4jSecurityInterceptor拦截器。

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

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

我认为没有开箱即用的解决方案。

所以我的问题是:我如何securityIntercetor才能获得正在调用的操作,以便我可以根据我的设置检查是否允许执行特定操作。

或者,也许你有其他想法。

谢谢。

4

1 回答 1

1

没有标准的方法来做到这一点。

我所做的是我创建了另一个拦截器(并将他放在被调用的拦截器列表中的第一位),这将保存当前操作,然后当 Spring 命中我的安全拦截器时,我将从由创建的请求范围 bean 获取方法我的第一个拦截器。

于 2011-03-23T12:49:11.967 回答