gpt4 book ai didi

Spring HTTP Invoker session (状态)存储

转载 作者:行者123 更新时间:2023-12-01 15:49:24 25 4
gpt4 key购买 nike

我有一个 Swing 客户端和一个在 tomcat 7 上运行的服务器,它们使用 Spring (3.1) HTTP 调用程序相互通信。到目前为止,通信工作正常(即使使用 TSL),但现在我正在尝试添加 Spring Security。

旁注:在典型的 Web 应用程序中,我会使用基本身份验证来对用户进行身份验证。在我的 CustomAuthenticationProvider 为用户返回一个 Authentication 对象之后,一切都“正常工作”,这意味着在每次进一步请求时,都会自动设置 SecurityContext。我想登录会向客户端返回一个 session key ,该 key 会在每次请求时发送以识别 session 。

这正是我使用 HTTP-Invoker 寻找的东西。目前,我似乎对每个请求都有一个新的上下文,这很糟糕,因为我的 customAuthenticationManager.authenticate(Authentication auth) 方法非常昂贵,每个用户 session 实际上只应调用一次。

有什么想法吗?

编辑 我在 http://forum.springsource.org/showthread.php?10764-Maintaing-State-while-using-HttpInvoker 找到了一些提示,但由于此链接已有 8 年以上历史,我希望有一个更简单的解决方案。

最佳答案

我现在找到了解决方案。首先,您需要知道 spring-security 部分与 web 应用程序中的部分完全相同(这很棒)。

在客户端,您需要更复杂的 HTTP 客户端实现。我用了org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor .在服务器端你可以使用 create-session="always" - <http 的属性- 确保始终创建 session 的元素。但是,我发现自己创建 session 更好(只需调用 httpServletRequest.getSession(),如果 session 不存在则创建 session ),因为这样您可以指定何时创建 session 。就我而言,仅当身份验证成功时,我才在我的 authenticationProvider 中创建 session 。

关于Spring HTTP Invoker session (状态)存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569129/

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