问题:
我们在两个应用程序中都有apache shiro身份验证,让我们将它们命名为application1(context是" /")和application2(context是" / app2")。对于基本身份验证,它工作正常。我们在两个tomcats(每个tomcat上的两个应用程序)上部署这两个应用程序,然后通过tomcat 8上下文共享来处理上下文共享,并且为了保留会话,我们使用memcached,这样即使一个tomcat关闭,应用程序和会话仍然保留。
如何处理会话?
如果用户登录这两个应用程序中的任何一个,他们的会话在两个应用程序之间共享,获取根上下文(" /")然后拦截拦截任何请求并查找用户是否是已登录或未登录。
新要求:
最近,我们必须实现一个功能,我们需要根据某个触发器使某个用户的所有会话到期,并且我正在阅读Apache Shiro的会话管理。我集成在application1中,一切正常,但现在application1和application2之间的会话共享已经消失。
我在上面的场景中进行了解释,以便我可以正确指示我应该寻找或尝试的内容。
我想做的是:
我想以某种方式在这两个应用程序之间共享shiro会话管理器,这样一旦它共享,我们就可以轻松处理会话共享部分和其他功能(使某些用户的会话无效)已经到位。
问题:
那么,请告诉我,如果我想做的事情正是我应该做的以及我需要理解和阅读的内容?或者,如果我在想错误的方向,请建议我正确的道路。
答案 0 :(得分:0)
我是本书的作者" 配对Apache Shiro和Java EE 7 "您可以免费获取here。
可以使用CacheManager完成会话群集功能。 Shiro原本支持EhCache& Hazelcast。我建议你使用Hazelcast。
以下是github上的示例项目:shiro-hazelcast-web-sample
要深入了解Hazelcast功能,您可以覆盖Shiro的CacheManager,并实现您想要的Hazelcast功能: