我正在实现Spring Integration for REST服务。我正在关注XPadro的githib示例 - https://github.com/xpadro/spring-integration。
我创建了简单的读取,写入和更新操作。
从int-http-dsl
项目中获取的示例。
我想用oath2实现spring-security。我正在参考http://docs.spring.io/spring-integration/reference/html/security.html。
我无法将两者连接在一起。因为以下是他们映射请求的方式
@Bean
public IntegrationFlow httpGetFlow() {
return IntegrationFlows.from(httpGetGate()).channel("httpGetChannel").handle("personEndpoint", "get").get();
}
@Bean
public MessagingGatewaySupport httpGetGate() {
HttpRequestHandlingMessagingGateway handler = new HttpRequestHandlingMessagingGateway();
handler.setRequestMapping(createMapping(new HttpMethod[]{HttpMethod.GET}, "/persons/{personId}"));
handler.setPayloadExpression(parser().parseExpression("#pathVariables.personId"));
handler.setHeaderMapper(headerMapper());
return handler;
}
以下是我们如何整合安全性
@Bean
@SecuredChannel(interceptor = "channelSecurityInterceptor", sendAccess = "ROLE_ADMIN")
public SubscribableChannel adminChannel() {
return new DirectChannel();
}
我无法在第一个例子中找到创建频道的方法,所以如何整合它。
我是正确的方向还是错了?
有没有更好的教程来处理Spring-integration(http)与spring-security(使用oauth)?
答案 0 :(得分:1)
Spring Integration Java DSL允许将外部@Bean
用于流定义中的消息通道。因此,您的httpGetChannel
可以声明并使用,如:
@Bean
@SecuredChannel(interceptor = "channelSecurityInterceptor", sendAccess = "ROLE_ADMIN")
public SubscribableChannel httpGetChannel() {
return new DirectChannel();
}
@Bean
public IntegrationFlow httpGetFlow() {
return IntegrationFlows.from(httpGetGate())
.channel(httpGetChannel())
.handle("personEndpoint", "get")
.get();
}
随意提出一个GitHub问题,在框架中直接从DSL的.channel()
定义中提出更明显的问题:https://github.com/spring-projects/spring-integration-java-dsl/issues