在同时使用两个弹簧启动应用程序时退出一个弹簧应用程序

use*_*132 2 cookies port spring-security jsessionid spring-boot

我有两个弹簧启动应用程序.

  • module1在端口8080上运行
  • module2在端口9090上运行

我在application.properties文件中使用此属性设置了端口

server.port=${port:9090}
Run Code Online (Sandbox Code Playgroud)

两个模块都有/ login,/ signup,无需通过以下代码完成身份验证即可访问.

http.authorizeRequests()
            .antMatchers("/signup", "/login").permitAll()
Run Code Online (Sandbox Code Playgroud)

任何其他请求都要求对用户进行身份验证.

如果我一次使用一个模块没有问题,

但是如果尝试在同一时间来回使用它们,那么问题是我每次使用另一个时都必须再次登录到之前的应用程序.例如.

  1. 转到登录页面到module1 - (标题响应已设置jsessionid = XX)确定
  2. 登录module1 - 确定
  3. 浏览module1上的安全内容 - 确定
  4. 在模块2上转到注册页面 - (标题响应已设置jsessionid = YY)确定
  5. 尝试浏览module1上的另一个安全内容 - 我必须再次登录

我很确定这是因为模块2重置了jessionid.

HTTP cookie端口是否特定? 我已经阅读了这篇文章,其中指出cookie不是特定于端口的.

但必须有一个解决方案,这样我每次切换应用程序时都不必登录.

Ste*_*com 7

您需要为这两个应用程序使用不同的cookie名称.

对于版本> = 1.3的spring-boot应用程序,有不同的方法来做这些,最简单的方法就是设置一个属性:

server.session.cookie.name = MYSESSIONID
Run Code Online (Sandbox Code Playgroud)

其他方法在此被描述.