我有 Apache 提供静态内容和 Tomcat 提供动态内容,由 mod_jk 链接。我的应用程序是基于 Spring 的,使用 Spring Security。Apache 页面是端口 80,Tomcat 页面是在端口 8080 上服务的。我发现 Spring Security 正确调用了登录并创建了一个 JSESSIONID cookie。当我继续导航到动态页面时,这个 JSESSIONID cookie 仍然存在;也就是说,到 Tomcat 提供的页面。当我导航到静态页面时,JSESSIONID cookie 消失了。大概这意味着Tomcat会话已经结束。这意味着当我随后导航回动态页面时,Spring Security 要求我再次登录。如何在这种混合的静态和动态环境中持久保存 Spring Security?当我导航回由 Apache 提供的页面时,有什么方法可以让 JSESSIONID cookie 持续存在。
JSESSIONID 是在我第一次访问动态页面时创建的(当我通过 spring-security 登录时)。在我浏览任何动态页面(即,通过 Tomcat 提供的页面)时,JSESSIONID 保持存在且不变。当我导航到静态页面时,JSESSIONID cookie 消失(这不是其值变化的问题 - 不存在 JSESSIONID cookie)。工人属性是:
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.lbfactor=50
worker.ajp13_worker.cachesize=10
worker.ajp13_worker.cache_timeout=600
worker.ajp13_worker.socket_keepalive=1
worker.ajp13_worker.socket_timeout=300
配置指令是:
JkMount /OLOSmember/ ajp13_worker
JkMount /OLOSmember/* ajp13_worker
浏览器是 Chrome。Apache 和 Tomcat7 在 Ubuntu 上。