在spring自动将安全标志添加到JSESSIONID cookie
我有一个在nginx之后的tomcat应用程序服务器。SSL在nginx上终止。部署在tomcat上的Spring web-
mvc应用程序应在JSESSIONID上设置安全标志。如果spring对此具有某种自动检测功能,那就太酷了,因为我那里没有SSL,因此我在开发过程中不会感到烦恼。
有没有办法告诉spring自动设置标志?
我使用JavaConfig设置应用程序,并使用Maven创建可部署的war-file。
回答:
当您使用spring-session,例如将会话保留在reddis中时,这确实是自动完成的。该cookie比创建通过org.springframework.session.web.http.CookieHttpSessionStrategy
在其中CookieHttpSessionStrategy#createSessionCookie
检查是否请求来自通过HTTPS和集相应地确保:
sessionCookie.setSecure(request.isSecure());
如果您 使用spring-session,则可以使用来配置安全cookie
ServletContextInitializer
。使用application属性,根据配置文件将其设置为true / false。
@Beanpublic 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
使用以下命令在生产服务器上启动应用程序:
--spring.profiles.active=prod
到目前为止,如果您尚未使用配置文件,这听起来似乎需要付出一定的努力,但是无论如何,您仍然很可能需要针对产品环境的配置文件,因此它确实值得。
以上是 在spring自动将安全标志添加到JSESSIONID cookie 的全部内容, 来源链接: utcz.com/qa/421224.html