spring自动将安全标志添加到JSESSIONID cookie

我有一个在nginx后面的tomcat应用程序服务器。 SSL终止于nginx。 部署在tomcat上的Spring web-mvc应用程序应该在JSESSIONID上设置安全标志。 这将是很酷,如果spring有一些自动检测,所以我不会在开发过程中感到困扰,因为我没有在那里的SSL。

有没有办法告诉spring自动设置标志?

我使用JavaConfig来设置应用程序,并使用Maven创build可部署的war文件。

我已经检查过,但这看起来不知何故丑陋和静态: 设置'安全'标志JSESSION ID cookie

当你使用spring-session时 ,例如用reddis保持会话,这确实是自动完成的。 该cookie不是由org.springframework.session.web.http.CookieHttpSessionStrategy创建的,它在CookieHttpSessionStrategy#createSessionCookie中检查请求是否通过HTTPS发出,并设置相应的安全性:

sessionCookie.setSecure(request.isSecure()); 

如果你使用spring-session,你可以使用ServletContextInitializer配置安全cookie。 使用应用程序属性 ,根据配置文件将其设置为true / false。

 @Bean public ServletContextInitializer servletContextInitializer(@Value("${secure.cookie}") boolean secure) { return new ServletContextInitializer() { @Override public void onStartup(ServletContext servletContext) throws ServletException { servletContext.getSessionCookieConfig().setSecure(secure); } }; } 

application.properties(在配置文件'prod'未激活时用于dev):

 secure.cookie=false 

application-prod.properties(仅在配置文件'prod'处于活动状态时使用,覆盖application.properties中的值):

 secure.cookie=false 

使用以下命令在prod服务器上启动应用程序:

 --spring.profiles.active=prod 

听起来像是一些努力,如果你到目前为止还没有使用过配置文件,但是你最有可能需要一个prod环境配置文件,所以它真的很值得。