gpt4 book ai didi

session - 配置两个cxf jaxrs客户端以使用相同的 session (cookie)

转载 作者:行者123 更新时间:2023-12-04 12:48:35 24 4
gpt4 key购买 nike

我想使用apache cxf使用jaxrs客户端连接到REST服务器。服务器具有一个要进行身份验证的URL,以及一些用于进行实际工作的URL。登录后,服务器将创建一个 session ,并使连接保持打开状态30分钟。我的问题是客户端不存储cookie,并且我总是在服务器上获得一个新的(未经身份验证的) session 。

我在spring应用程序上下文中配置了客户端。

<jaxrs:client id="loginResource" 
serviceClass="com.mycompany.rest.resources.LoginResource"
address="${fsi.application.url}">
</jaxrs:client>
<jaxrs:client id="actionResource"
serviceClass="com.mycompany.rest.resources.ActionResource"
address="${fsi.application.url}">
</jaxrs:client>

如何配置两个客户端以使用相同的 session 或在客户端之间共享 session cookie?

最佳答案

我一直在同一个问题上挣扎,我终于找到了解决方案。

1)让客户保留cookie。

WebClient.getConfig(proxy).getRequestContext().put(
org.apache.cxf.message.Message.MAINTAIN_SESSION, Boolean.TRUE);

也许有一种方法可以通过配置或以编程方式完成上述任务。

2)将cookie从一个客户端复制到另一个客户端。
public static void copyCookies(Object sourceProxy, Object targetProxy) {
HTTPConduit sourceConduit = WebClient.getConfig(sourceProxy).getHttpConduit();
HTTPConduit targetConduit = WebClient.getConfig(targetProxy).getHttpConduit();
targetConduit.getCookies().putAll(sourceConduit.getCookies());
}

使用代理A进行身份验证之后,我调用上述方法与代理B共享其cookie,这将完成实际工作。

关于session - 配置两个cxf jaxrs客户端以使用相同的 session (cookie),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12900072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com