AJAX调用不同的应用程序上下文(Java + Tomcat)

时间:2017-03-03 22:04:23

标签: javascript java ajax tomcat spring-security

我有两个使用Spring Security开发的Web应用程序。每个应用程序都有自己的WAR,因此部署在它自己的上下文中:

localhost:8080/my-app1
localhost:8080/my-app2

现在,当我尝试在my-app1上对my-app2上的控制器进行AJAX调用时,收到一条错误消息,指出我的会话已过期。这是有道理的,毕竟用户在my-app1上进行了身份验证,但未在my-app2上进行身份验证。

有没有解决方法?

2 个答案:

答案 0 :(得分:0)

我有两个解决方案:

  1. 安全的:您可以尝试在数据库中为两个应用程序保存“id会话”,并在调用中传递此ID。在第二个应用程序中,您可以验证该ID并继续进行呼叫。
  2. 不安全的人:您可以将Spring配置为不在my-app2上的此次调用(网址映射)中验证用户会话。
  3. 也发现了这一点:Any way to share session state between different applications in tomcat?

答案 1 :(得分:0)

我建议您在浏览器端将登录令牌存储为cookie条目,cookie应该与app1和app2具有相同的域(在您的情况下,它只是localhost)。因此,它将被传递到两个应用程序的后端。

登录令牌可以有加密的用户名,可以由服务器解密,密码的哈希值用于验证。

这实际上是Spring Security中基于令牌的记住我服务背后的想法。