我有两个 spring boot 应用程序。
- module1 在端口 8080 上运行
- module2 在端口 9090 上运行
我已在 application.properties 文件中使用此属性设置端口
server.port=${port:9090}
这两个模块都有/login、/signup,无需通过以下代码完成身份验证即可访问。
http.authorizeRequests()
.antMatchers("/signup", "/login").permitAll()
任何其他请求都需要对用户进行身份验证。
如果我一次使用一个模块没有问题,
但是如果尝试同时来回使用它们,那么问题是我每次使用另一个应用程序时都必须重新登录到上一个应用程序。 例如。
- 转到模块 1 的登录页面 -( header 响应已设置 jsessionid=XX)确定
- 登录到 module1 - 确定
- 浏览模块 1 上的安全内容 - 确定
- 转到模块 2 上的注册页面 -( header 响应已设置 jsessionid=YY)ok
- 尝试浏览到模块 1 上的另一个安全内容 - 我必须重新登录
我很确定这是由于模块 2 重置了 jessionid。
Are HTTP cookies port specific? 我读过这篇文章,其中指出 cookie 不是特定于端口的。
但必须有一个解决方案,这样我就不必每次切换应用程序时都必须登录。
请您参考如下方法:
您需要为两个应用程序使用不同的 cookie 名称。
有不同的方法可以做到这些,最简单的方法是,对于版本 >=1.3 的 spring-boot 应用程序,只需设置一个属性:
server.session.cookie.name = MYSESSIONID
此post 中描述了其他方式.