+-

我有一个在nginx后面的tomcat应用程序服务器.
SSL终止于nginx.
部署在tomcat上的 Spring web-mvc应用程序应该在JSESSIONID上设置安全标志.
如果spring有一些自动检测功能会很酷,所以我不会在开发过程中受到打扰,因为我没有SSL.
SSL终止于nginx.
部署在tomcat上的 Spring web-mvc应用程序应该在JSESSIONID上设置安全标志.
如果spring有一些自动检测功能会很酷,所以我不会在开发过程中受到打扰,因为我没有SSL.
有没有办法告诉spring自动设置标志?
我使用JavaConfig来设置应用程序并使用Maven来创建可部署的war文件.
我已经检查了这个,但这看起来有点丑陋和静态:
set ‘secure’ flag to JSESSION id cookie
最佳答案
当您使用 spring-session时,例如在reddis中坚持你的会议,
这确实是自动完成的.该cookie由org.springframework.session.web.http.CookieHttpSessionStrategy创建,它在CookieHttpSessionStrategy中创建#createSessionCookie,检查请求是否来自HTTPS并相应地设置安全:
这确实是自动完成的.该cookie由org.springframework.session.web.http.CookieHttpSessionStrategy创建,它在CookieHttpSessionStrategy中创建#createSessionCookie,检查请求是否来自HTTPS并相应地设置安全:
sessionCookie.setSecure(request.isSecure());
如果不使用spring-session,则可以使用ServletContextInitializer配置安全cookie.
使用application property,根据配置文件将其设置为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环境的配置文件,所以它真的很值得.
点击查看更多相关文章
转载注明原文:java – 自动在spring中为JSESSIONID cookie添加安全标志 - 乐贴网