我有一个使用PayloadRootAnnotationMethodEndpointMapping的Spring-WS服务,它有几个拦截器:
<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中获取正在调用的操作,以便根据我的设置来检查是否允许执行特定操作。
或者你有其他的想法。
谢谢。
发布于 2011-03-23 20:49:12
没有标准的方法可以做到这一点。
我所做的是创建了另一个拦截器(并将他放在被调用的拦截器列表的第一位),该拦截器将保存当前的操作,然后当Spring命中我的安全拦截器时,我将从由我的第一个拦截器创建的请求作用域bean中获取方法。
https://stackoverflow.com/questions/3630056
复制相似问题