我正在尝试对部署在具有 2 个节点的集群模式下工作的 jboss 上的 Web 应用程序进行身份验证。
身份验证成功后,我被重定向到一个管理页面,过滤器检查我是否登录。
在独立模式下它工作得很好,但是当我部署到使用集群模式的生产中时,过滤器拒绝我的请求,因为它无法访问我在身份验证时建立的 session 参数。
使用开发人员工具,我看到有 3 个 JSESSIONID cookie 集:一个用于 /
, 一为 /myapplication
path 和另一个名为 JSESSIONID-34234 的路径也用于 /myapplication
路径(我在开始这个过程之前已经清除了所有这些)。
浏览 jboss 文档我看不到对此的任何解释,尽管它似乎是我问题的根源。
如何在我的 JBoss 集群中进行身份验证(我使用的是基于 spring security http 表单的身份验证)?
最佳答案
通过将以下内容添加到虚拟主机配置文件来启用粘性 session 来解决:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/myapplication" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://jboss6-hc-001-8109>
BalancerMember ajp://jboss2.imatiasl.lan:8109 route=jboss2-hc-001-server-02
BalancerMember ajp://jboss3.imatiasl.lan:8109 route=jboss3-hc-001-server-02
ProxySet lbmethod=byrequests stickysession=ROUTEID
</Proxy>
关于jboss 集群 session 复制不起作用(多个 jsessionid cookie),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36882250/