java - 如何将登录用户的 session 数据传输到另一个 Java 应用程序

标签 java spring spring-mvc tomcat

我有一个遗留应用程序。登录系统非常简单,就像它从用户那里获取用户名/密码并运行数据库查询并验证用户。现在,我在那个遗留的 Java 应用程序中创建了一个链接,它登陆到一个完全独立的 Java 应用程序仪表板页面(写在Spring MVC)。截至目前,新的 spring 应用程序作为完全独立的应用程序,没有用户验证在那里实现。我想要类似的东西,如果有人单击链接(他只能在登录旧应用程序后访问链接),它会与用户 session 数据一起重定向到新应用程序。这样用户也可以看到自己登录到新应用程序。如果他从新应用程序注销,我希望他也从旧应用程序注销。

遗留应用程序——简单的基于 servlet jsp 的 java 应用程序,在 tomcat 5.5 上运行 新应用程序 - 用 Spring MVC 4 编写并在 tomcat 6 上运行

两个 tomcat 容器都驻留在同一个 red hat box 上。

任何帮助将不胜感激。谢谢

最佳答案

您可以尝试为遗留应用程序开发一个 AuthenticationSuccessHandler,并让它在成功时在两个应用程序之间的共享内存中设置来自 SecurityContext 的 Autentication。注销时,销毁该对象。

对于新的应用程序,开发一个过滤器或处理程序来检查请求的共享内存中是否存在与请求中的 SESSIONID 关联的授权。如果它不再存在,则强制 spring 销毁此 session ,将您注销。

身份验证成功处理程序:http://docs.spring.io/autorepo/docs/spring-security/3.1.7.RELEASE/apidocs/org/springframework/security/web/authentication/AuthenticationSuccessHandler.html

安全内容:http://docs.spring.io/autorepo/docs/spring-security/3.2.2.RELEASE/apidocs/org/springframework/security/core/context/SecurityContext.html

共享内存:http://hazelcast.com/

当然,这只是两个应用程序之间的脆弱链接,也许您应该考虑以最能满足 CAS 目的的方式重新开发遗留应用程序,例如公开用于登录的 Web 服务,并拥有一个新应用程序的登录处理程序调用 web 服务以尝试登录并使用答案决定是否登录用户。这样一来,您只有一个 session (在新应用程序上),并且可以更轻松地扩展旧版应用程序(如果需要并且不会被其他限制阻止)。

这只是一个意见,如果不更详细地查看您的应用程序,它可能会被证明是有用的或完全是垃圾:)

关于java - 如何将登录用户的 session 数据传输到另一个 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27121366/

相关文章:

mysql - 无法添加或更新子行 : a foreign key constraint fails. 映射多个 onetoone 引用的最佳做法是什么

ajax - 使用 Jackson 解析器在 Spring MVC 中映射 JSON 数据

java - 摩托罗拉 Xoom 是否有绘图错误,或者只有我有?

java - 了解 SQL 中的表约束

java - Spring web flux WebClient : Connection rest by peers, #block 因错误而终止。在以下站点观察到错误

java - Spring Batch如何分块读取?它维护光标吗?

java - 从 Spring 表单复选框元素接收 EnumSet?

JavaFX | javafx.fxml.LoadException : Missing resource key

java - 使用 jena 在 java 中构建维基百科查询表单

java - 如何在 Java 中从 JTextField 设置 Bean 属性值?