在同一个tomcat

时间:2017-08-09 15:48:42

标签: spring-mvc tomcat8 shiro

问题:

我们在两个应用程序中都有apache shiro身份验证,让我们将它们命名为application1(context是" /")和application2(context是" / app2")。对于基本身份验证,它工作正常。我们在两个tomcats(每个tomcat上的两个应用程序)上部署这两个应用程序,然后通过tomcat 8上下文共享来处理上下文共享,并且为了保留会话,我们使用memcached,这样即使一个tomcat关闭,应用程序和会话仍然保留。

如何处理会话?

如果用户登录这两个应用程序中的任何一个,他们的会话在两个应用程序之间共享,获取根上下文(" /")然后拦截拦截任何请求并查找用户是否是已登录或未登录。

新要求:

最近,我们必须实现一个功能,我们需要根据某个触发器使某个用户的所有会话到期,并且我正在阅读Apache Shiro的会话管理。我集成在application1中,一切正常,但现在application1和application2之间的会话共享已经消失。

我在上面的场景中进行了解释,以便我可以正确指示我应该寻找或尝试的内容。

我想做的是

我想以某种方式在这两个应用程序之间共享shiro会话管理器,这样一旦它共享,我们就可以轻松处理会话共享部分和其他功能(使某些用户的会话无效)已经到位。

问题:

那么,请告诉我,如果我想做的事情正是我应该做的以及我需要理解和阅读的内容?或者,如果我在想错误的方向,请建议我正确的道路。

1 个答案:

答案 0 :(得分:0)

我是本书的作者" 配对Apache Shiro和Java EE 7 "您可以免费获取here

enter image description here

可以使用CacheManager完成会话群集功能。 Shiro原本支持EhCache& Hazelcast。我建议你使用Hazelcast。

以下是github上的示例项目:shiro-hazelcast-web-sample

要深入了解Hazelcast功能,您可以覆盖Shiro的CacheManager,并实现您想要的Hazelcast功能: