在WSO2 ESB中,如何存储cookie并在以后使用它们进行身份验证?

时间:2015-01-05 22:03:06

标签: wso2esb

我有一个我正在呼叫的服务,它返回带有身份验证信息的cookie。如何存储cookie,以后再使用它们?

这对我不起作用。我看到饼干被退回了,但我没有看到它被设置。

<!-- LOGON CALL -->
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="setCookieHeader" expression="$trp:cookie"></property>
<payloadFactory media-type="xml">
    <format><somexml></somexml></format>
</payloadFactory>
<call>
    <endpoint>
       <address uri="http://serviceurl.domain.com" format="pox"></address>
    </endpoint>
</call>
<log>
<property name="cookie" expression="get-property('setCookieHeader')"></property>
</log>
<!-- The Above Log statement prints correctly -->

<!-- Second Service CALL -->
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="setCookieHeader" expression="$trp:cookie"></property>
<payloadFactory media-type="xml">
    <format><somexml></somexml></format>
</payloadFactory>
<call>
    <endpoint>
       <address uri="http://serviceurl.domain.com" format="pox"></address>
    </endpoint>
</call>

1 个答案:

答案 0 :(得分:0)

从响应中获取Cookie:

<property name="setCookieHeader" expression="$trp:Set-Cookie" scope="default" type="STRING"/>

为下一个请求设置Cookie:

<property name="Cookie" expression="$ctx:setCookieHeader" scope="transport"/> <!-- if setCookieHeader has been initialized before -->

或者

<property name="Cookie" expression="$trp:Set-Cookie" scope="transport"/>