gpt4 book ai didi

java - 在struts2中恢复Web session

转载 作者:行者123 更新时间:2023-12-02 08:33:21 30 4
gpt4 key购买 nike

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

在参数中,我们传递 jsessionid,并且我们期望当远程服务器向我们的服务器发出请求(通过客户浏览器重定向到我们的服务器)时, session 将与用于发送初始付款请求的 session 相同。这不会发生,我们有两个不同的 session ,尽管支付处理器在向我们发出的请求中包含我们原始的 jsessionid ( https://blabla/?jsessionid=something )。

我们应该如何在 struts2 中重新创建 session ,因为唯一连接“旧”和"new" session 的是请求 URL 中的 jsessionid?

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

非常感谢您的回复。

最佳答案

也许(我不确定)尝试从另一个网站将自己“重新绑定(bind)”到旧的 struts (servlet) session 并不是一个好的做法。

您希望用户从支付处理器返回您的 struts2 网站而不询问其凭据,这是可以理解的。但是,在高级意义上“保持 session 处于 Activity 状态”(从不需要重新验证的用户的角度来看),并不一定意味着您想要保留 struts-servlet session 活着,以便重新绑定(bind)到它。在我看来,这有点肮脏并且容易出现不安全问题 - 例如,不清楚(对于用户或开发人员来说)当用户位于支付站点时原始 session 是打开还是关闭(考虑一下在支付网站中进行“注销”操作...这也会使用户从原始网站注销吗?)

我会选择以下场景之一:

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

2) 如果新的支付站点页面取代了以前的页面,则原始(servlet) session 将失效 - 但在新 session 中,在支付站点中,放置了某种允许他返回的身份验证授权 token 到原始站点(可能包含一些特定于 session 的数据)。但在这种情况下,将会有一个新的 servlet-struts2 session 。

基本上,我说过(从概念上和有意地)考虑一个不存在的浏览器窗口的 Servlet session 处于 Activity 状态(即它已被关闭或被另一个 Web 应用程序的某些页面替换)是可疑的做法。

另请参见此处:http://nickcoblentz.blogspot.com/2008/09/jsessionid-regeneration-in-struts-2.html

关于java - 在struts2中恢复Web session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2639464/

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