Java 在struts2中恢复web会话

Java 在struts2中恢复web会话,java,servlets,struts2,Java,Servlets,Struts2,我有一个网站和支付网关集成的经典场景,其中支付请求被发送到支付处理器,支付处理器使用我在原始请求中传递给它的一些参数完成后调用我的应用程序 在参数中,我们传递jsessionid,我们希望当远程服务器向我们的服务器发出请求时(通过客户浏览器重定向到我们的服务器),会话将与用于发送初始付款请求的会话相同。这种情况不会发生,我们有两个不同的会话,尽管支付处理器在对我们的请求()中包含了我们的原始jsessionid 我们应该如何在struts2中重新创建会话,因为连接“旧”和“新”会话的唯一东西是请

我有一个网站和支付网关集成的经典场景,其中支付请求被发送到支付处理器,支付处理器使用我在原始请求中传递给它的一些参数完成后调用我的应用程序

在参数中,我们传递jsessionid,我们希望当远程服务器向我们的服务器发出请求时(通过客户浏览器重定向到我们的服务器),会话将与用于发送初始付款请求的会话相同。这种情况不会发生,我们有两个不同的会话,尽管支付处理器在对我们的请求()中包含了我们的原始jsessionid

我们应该如何在struts2中重新创建会话,因为连接“旧”和“新”会话的唯一东西是请求URL中的jsessionid

有什么想法吗?这是可能的,还是当用户使用数据输入表单从我们的服务器移动到支付处理器的完全不同的域时,“旧”会话数据会被删除?这就解释了我们无法重新创建会话的原因

非常感谢您的回复。

也许(我不确定)尝试从另一个网站“重新绑定”到旧的struts(servlet)会话不是一个好的做法

可以理解的是,您希望用户从支付处理器返回struts2网站,而无需询问其凭据。但是,从高级意义上说(从不需要重新验证的用户的角度来看)“保持会话活动”,并不一定意味着您希望保持struts servlet会话活动,以便重新绑定到它。在我看来,这似乎有点脏,而且容易不安全-例如,不清楚(用户也不清楚,开发人员也不清楚)当用户在支付站点时,原始会话是打开还是关闭的(想想在支付站点中的“注销”操作……这是否也会将用户从原始站点注销?)

我会选择以下场景之一:

1) 当经过身份验证的用户单击指向支付站点的链接时,它会打开另一个窗口-有两个会话处于活动状态,他可以独立地导航和关闭每个会话(第一个会话只提供了一个身份验证票证以打开第二个会话)。这是我在自己的家庭银行中经常看到的行为

2) 如果新的支付站点页面替换了以前的页面,那么原始(servlet)会话将无效-但在新会话中,支付站点中放置了某种身份验证授权令牌,允许他返回原始站点(可能带有某些特定于会话的数据)。但在这种情况下,将有一个新的servlet-struts2会话

基本上,我曾说过,(概念上和有意地)考虑一个不存在的浏览器窗口的servlet会话生存(即它已经被另一个Web应用程序的一些页面关闭或替换)是可疑的实践。 另见此处: