WSO2 ESB代理阻止请求

时间:2015-01-28 20:26:27

标签: routing wso2 wso2esb blocking

我在WSO2 ESB 4.8.1上。 如果他们的路径匹配正则表达式,我需要阻止一些请求。所以我已经实现了这个代理和这些序列:

在我的代理人中:

  <target>
  <inSequence>        
     <sequence key="MySequence"></sequence>
     <send>
         <endpoint key="epProva"></endpoint>
     </send>
  </inSequence>

MySequence的位置:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="MySequence">        
     <conditionalRouter continueAfter="false">
        <conditionalRoute breakRoute="true" asynchronous="true">
           <condition>
              <match type="url" regex=".*/my/path/.*"></match>
           </condition>
           <target sequence="conf:/BannedListMessage"></target>
        </conditionalRoute>
     </conditionalRouter>     
</sequence>

其中BannedListMessage是:

<sequence xmlns="http://ws.apache.org/ns/synapse">   
   <header name="To" action="remove"></header>
   <property name="HTTP_SC" value="401" scope="axis2"></property>
   <property name="RESPONSE" value="true"></property>
   <property name="NO_ENTITY_BODY" action="remove" scope="axis2"></property>
   <payloadFactory media-type="json">
      <format>
        {"code":"401", "unhautorized."}      
     </format>
  </payloadFactory>
  <property name="messageType" value="application/json" scope="axis2"></property>
   <send></send> 
</sequence>

MySquence的工作是检查请求url是否与正则表达式匹配,在这种情况下,它必须阻止请求的流,然后才能到达服务器,并调用BannedListMessage序列,它将发回错误回复(401)给客户。

在我尝试的过程中,我注意到了

  • 如果MySequence中的属性continueAfter = true,我会收到401“未授权”错误作为响应,但请求到达服务器。

  • 如果我设置continueAfter =“false”,我会收到202 Accepted响应,但请求无法到达服务器。

我的目标是将BannedListMessage 401错误发送到客户端并阻止请求。我该怎么办?

1 个答案:

答案 0 :(得分:0)

请使用响应中介而不是BannedListMessage序列中的发送中介。这是修改后的序列。

<sequence xmlns="http://ws.apache.org/ns/synapse">
   <header name="To" action="remove"></header>
   <property name="HTTP_SC" value="401" scope="axis2"></property>
   <property name="RESPONSE" value="true"></property>
   <property name="NO_ENTITY_BODY" action="remove" scope="axis2"></property>
   <payloadFactory media-type="json">
      <format>
        {"code":"401", "unhautorized."} 
     </format>
  </payloadFactory>
  <property name="messageType" value="application/json" scope="axis2"></property>
   <respond></respond> 
</sequence>