不同端口上的多个Spring Boot实例-登录/注销问题

时间:2019-01-20 17:18:45

标签: java spring spring-boot spring-security

我正在Windows 10专业版安装上设置新的开发环境。因此,我将我的spring-boot应用程序导出为.jar文件,并在不同端口上将其作为Windows服务启动。

  • 端口10001上的Spring Boot应用程序1
  • 端口10002上的Spring Boot应用2
  • 依此类推

我已经解锁了防火墙中的那些端口,一切似乎都正常运行。

当我使用端口10001登录应用程序时,一切似乎都还不错。但是,一旦我登录到另一个应用程序(10002),我就会自动注销10001应用程序。

总而言之,我一次只能登录一个应用程序。

我正在使用MySql8 Server安装。所有应用程序都有自己的数据库架构。另外,我正在使用Spring Security进行身份验证。

由于所有这些应用程序都能在我们的生产服务器(jelastic Web托管)上完美运行,因此应该与我的开发环境有关,而不是代码问题。

2 个答案:

答案 0 :(得分:1)

很高兴您解决了您的问题。我认为使用SSL和子域并不是解决问题的最简单的方法,特别是如果您在该环境中运行自动化测试,则ssl可能会降低您的速度。

有一个众所周知的地址,您可以将您的应用程序绑定到:127.0.0.1。但是,大多数人不知道,您的回送设备实际上正在侦听其他编号为127.0.0.1的127.0.0.1/8,其网络掩码为255.0.0.0,这意味着您可以将服务绑定到整个类中的任何地址一个子网。

TLDR:尝试将应用程序1绑定到127.0.0.2,将应用程序2绑定到127.0.0.3。这应该对Cookie有所帮助,以后再添加监视端口,将使管理端口号的工作变得更加轻松。

答案 1 :(得分:0)

正如我在上面的评论中已经提到的那样,该问题与任何软件错误均无关,而是与http的定义方式有关:

“ Cookie不会按端口提供隔离。如果一个端口上运行的服务可以读取cookie,则同一服务器另一端口上运行的服务也可以读取cookie。”

Are HTTP cookies port specific?

我通过使用SSL加密和其他子域解决了我的问题。