如何根据用户数据的某些哈希生成自定义 JSESSIONID 以复制会话
是否可以覆盖 Tomcat 的嵌入式 JSESSIONID 生成器,以便能够根据用户的登录创建此 cookie 的自定义值?
为什么我需要这个:我有一个带有“粘性会话”的负载均衡器,配置为将具有相同 JSESSIONID 的请求路由到同一服务器,并且我想防止出现同一用户可以在不同服务器上启动两个不同会话的情况。
PS:这一切都是关于Amazon EC2
Is it possible to override Tomcat's embedded generator of JSESSIONID, to be able to create custom values of this cookie, based on user's login?
Why do I need this: I have a load balancer with "sticky sessions", configured to route requests with the same JSESSIONID to the same server, and I want to prevent situation, when same user can start two different sessions on different servers.
P.S: all this is about Amazon EC2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有一个更好的方法可以做到这一点: 请参阅有关会话复制的 tomcat 手册在集群中
There is a better way to do this: See the tomcat manual on session replication in cluster
您可以通过定义自己的自定义会话管理器来实现此目的,
http:// tomcat.apache.org/tomcat-5.5-doc/config/manager.html
但是,它可能不适用于您的用例。用户登录之前您不知道用户名,但需要创建会话才能登录。
我认为将会话推送到后端是最好的方法。您可以使用随 Tomcat 分发的 JDBCStore 会话管理器。您还可以找到 memecached 的实现。
如果多个服务器的目的是为了冗余,您也可以使用集群,但如果您的目标是扩展负载,那么这对您没有帮助。
You can do so by defining your own customized session manager,
http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html
However, it probably doesn't work for your use-case. You don't know username before user logs in but the session needs to be created for the login.
I think pushing session to the backend is the best approach. You can use the JDBCStore session manager distributed with Tomcat. You can also find implementation for memecached.
If the purpose of multiple servers is for redundancy, you can also use clustering but that doesn't help you if your goal is to scale for load.