我有2个应用程序:第一个是用ruby编写的(It's redmine),第二个是Spring启动应用程序,两者都托管在同一个tomcat服务器上。 我怎样才能做到这一点?
答案 0 :(得分:2)
不允许分享会话。通过(servlet规范)定义,会话属于单个Web应用程序。
参考:Servlet Spec 4.0,第7.3节:
HttpSession
个对象必须在应用程序(或servlet上下文)级别设置范围。底层机制(例如用于建立会话的cookie)对于不同的上下文可以是相同的,但引用的对象(包括该对象中的属性)决不能由容器在上下文之间共享。
有些方法可以通过设置共享缓存等来解决这个限制,但从安全性或资源使用角度来看,它总是很脆弱且有潜在危险。
答案 1 :(得分:0)
使用unique-user-auth-token的用户数据库或用户数据文件(nosql),可由两个应用程序访问(或3,4,5 ...)
全球概念:
答案 2 :(得分:0)
共享Web应用程序至少是Bad Practice(TM):Web应用程序完全按设计分离。如果两个应用程序都可以轻松地进入彼此的会话:想象一下如果一个人会覆盖另一个人设置的值,并且两个应用程序都期望在相同的密钥名下有不同的数据,会发生什么。
如果您只需要单点登录,则可以使用SingleSignOnValve
确保您只需登录一次(前提是您通过容器进行身份验证,例如Tomcat Realm)。检查server.xml
是否有注释掉的默认值,或检查文档以获取有关身份验证和阀门的更多信息。
您可以通过在两个模块中实现UI并参考常见的业务逻辑来解决这个问题,但这是一个过于宽泛的体系结构更改,无法适应这个答案。