【问题标题】:Struts2: Session Problem (after reverse proxy)Struts2:会话问题(反向代理后)
【发布时间】:2015-07-02 22:08:47
【问题描述】:

我将会话参数存储在我使用 SessionAware 接口在我的操作中获取的 Struts2 会话映射中。我的应用程序位于 /MyApp 路径中。

在具有反向代理重定向的 Apache 服务器上设置 struts2 应用程序后,使 URL http://www.appdomain.com/ 指向我在 localhost:8080/MyApp 上的本地 tomcat , Struts2 会话处理不再起作用。我希望会话 cookie 存储为 http://localhost:8080/MyApp 而不是 http://www.appdomain.com/ 的 Struts2 上下文 ...

在 Struts2 配置中有解决方案吗?或者以某种方式以编程方式更改会话cookie?在互联网或官方文档中找不到任何有关此的信息。请帮忙,我已经在生产中,我的登录不起作用;-)

【问题讨论】:

  • 您是否尝试过 URL 重写以将会话 ID 放入 URL 中?
  • 不是真的,但这不是我真正想做的(漂亮的 URL 尽可能好)。在这期间我发现 Struts2 设置的会话 cookie 仅对 appdomain.com/MyApp 有效……我需要一种方法来更改设置此命名空间的 struts2 行为。
  • 好的,我已经尝试将用户的 JSESSIONID cookie 设置为 sessionId,但发现 servlet 仍然不允许我这样做。现在我正在尝试通过 JavaScript 设置它,但我似乎也没有让它工作:-/

标签: java http session struts2 session-state


【解决方案1】:

这是旧的,但我发现它并想放弃我的 5 美分。

您可以使用的一个修复方法是编辑 web.xml 并在 session-config 中设置如下内容:

<session-config>
    <session-timeout>10</session-timeout>
    <cookie-config>
        <name>MYAPPSESSIONID</name>
        <path>/</path>
    </cookie-config>
</session-config>

这改变了

  • 从 JSESSIONID 到 MYAPPSESSIONID 的 sessionid cookie,因此它不会与可能暴露在同一代理上的其他应用程序冲突
  • cookie 应用的路径。所以它会一直发送到服务器

希望这对其他人有帮助。

【讨论】:

    【解决方案2】:

    我刚刚用一个肮脏的 hack 解决了这个问题:我将 Session Id 传递给 JSP 并使用 javascript 设置所需的 JSESSIONID cookie 客户端。

    function createCookie(name,value,days) { 如果(天){ var date = new Date(); date.setTime(date.getTime()+(天*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } 否则 var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; }

    $(document).ready(function() { createCookie("JSESSIONID","",3); });

    从该页面获取 JS 代码:http://www.quirksmode.org/js/cookies.html

    谢谢,问题解决了!

    最好的问候, 蒂姆

    【讨论】:

    • 我接受了我的答案,因为似乎没有其他答案。无论如何,我很乐意听到更好的解决方案。
    【解决方案3】:

    把这个放在你的httpd.conf

    #all cookies from /MyApp are proxied to "/"
    ProxyPassReverseCookiePath /MyApp /
    

    http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreversecookiepath

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2021-03-11
      相关资源
      最近更新 更多