我有一个位于 nginx 后面的 tomcat 应用程序服务器。 SSL 在 nginx 上终止。部署在 tomcat 上的 Spring web-mvc 应用程序应在 JSESSIONID 上设置安全标志。如果 spring 对此有一些自动检测,那会很酷,这样我在开发过程中就不会被打扰,因为我那里没有 SSL。
有没有办法告诉 spring 自动设置标志?
我使用 JavaConfig 设置应用程序并使用 Maven 创建可部署的 war 文件。
我已经检查过了,但这看起来有点丑陋和静态: 将“安全”标志设置为 JSESSION id cookie
原文由 ST-DDT 发布,翻译遵循 CC BY-SA 4.0 许可协议
当你使用 spring-session 时,例如在 reddis 中持久化你的会话,这确实是自动完成的。 cookie 是由
org.springframework.session.web.http.CookieHttpSessionStrategy
创建的,它在CookieHttpSessionStrategy#createSessionCookie
检查请求是否来自 HTTPS 并相应地设置安全:如果您 不 使用 spring-session,则可以使用
ServletContextInitializer
配置安全 cookie。使用 应用程序属性,根据配置文件将其设置为真/假。application.properties(当配置文件“prod”未激活时在开发中使用):
application-prod.properties(仅在配置文件“prod”处于活动状态时使用,覆盖 application.properties 中的值):
使用以下命令在产品服务器上启动您的应用程序:
如果到目前为止您还没有使用过配置文件,这听起来需要付出一些努力,但是您很可能无论如何都需要一个用于生产环境的配置文件,所以这真的很值得。