+-
java – 自动在spring中为JSESSIONID cookie添加安全标志
我有一个在nginx后面的tomcat应用程序服务器.
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并相应地设置安全:

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添加安全标志 - 乐贴网