如何解决单独的容器会话和Shiro会话?
我们使用Apache Shiro为在一个Tomcat实例中运行的4个应用程序提供安全性。它们作为4个WAR部署,所有Shiro配置和安全性均位于第5个WAR中。
为了在这些应用程序之间提供SSO,我们已将ehCache配置为在所有5个Web应用程序之间共享会话(最初的意图是使用多个容器,但这从未发生)。
我们面临的问题是,在跨应用程序共享会话时,我们还共享了放置在会话中的所有对象数据。这是一个问题,因为这些应用程序具有不同的依赖关系,因此具有不同的类路径,从而导致ClassNotFoundExceptions。我想我说的很对,默认情况下,在Tomcat容器中,每个WAR都将有一个单独的会话,因此这不是问题,但是那样我们将无法共享Shiro用户数据!
所以我的问题是:是否可以有单独的Shiro和Container会话?这将允许期望的结果,即Shiro使用的任何登录数据都将放入“ Shiro”会话中并在多个应用程序之间共享,而Container会话对于每个应用程序都是独立的,因此不会在它们之间共享数据。 / p>
解决方法
Shiro需要在每个容器中运行。然后,这些容器需要共享Shiro会话。 https://shiro.apache.org/session-management.html#session-storage
您可以使用容器的会话共享功能或使用Shiro的会话共享功能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。