Spring boot 2:http请求重定向到https方法的变更


声明:本文转载自https://my.oschina.net/u/3491123/blog/1790458,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

Spring boot2.0 版本已经推出一月有余,这次版本升级的幅度很大,很多在1.5版本的的配置属性或类被重命名或者删除,导致以前惯用的写法不再适用,其中就包括http请求重定向到https请求方法的变更。

如果在搜索引擎上搜索springboot 支持http/https,大致能搜到的方法是这样的

    // 在某配置类中添加如下内容     // 监听的http请求的端口,需要在application配置中添加http.port=端口号  如80     @Value("${http.port}")     Integer httpPort;      //正常启用的https端口 如443     @Value("${server.port}")     Integer httpsPort;     @Bean 	public EmbeddedServletContainerFactory servletContainer() { 		TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() { 			@Override 			protected void postProcessContext(Context  context) { 				SecurityConstraint constraint = new SecurityConstraint(); 				constraint.setUserConstraint("CONFIDENTIAL"); 				SecurityCollection collection = new SecurityCollection(); 				collection.addPattern("/*"); 				constraint.addCollection(collection); 				context.addConstraint(constraint); 			} 		}; 		tomcat.addAdditionalTomcatConnectors(httpConnector()); 		return tomcat; 	}  	@Bean 	public Connector httpConnector() { 		Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); 		connector.setScheme("http"); 		//Connector监听的http的端口号 		connector.setPort(httpPort); 		connector.setSecure(false); 		//监听到http的端口号后转向到的https的端口号 		connector.setRedirectPort(httpsPort); 		return connector; 	} 

但是在Spring boot2.0中EmbeddedServletContainerFactory 已经被重命名为TomcatServletWebServerFactory,导致上面这段代码不可用,所以在2.0版本我们只需把EmbeddedServletContainerFactory 重命名为TomcatServletWebServerFactory就可以了。修改后的代码大致如下

    // 在某配置类中添加如下内容     // 监听的http请求的端口,需要在application配置中添加http.port=端口号  如80     @Value("${http.port}")     Integer httpPort;      //正常启用的https端口 如443     @Value("${server.port}")     Integer httpsPort;      // springboot2 写法     @Bean     public TomcatServletWebServerFactory servletContainer() {         TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {             @Override             protected void postProcessContext(Context context) {                 SecurityConstraint constraint = new SecurityConstraint();                 constraint.setUserConstraint("CONFIDENTIAL");                 SecurityCollection collection = new SecurityCollection();                 collection.addPattern("/*");                 constraint.addCollection(collection);                 context.addConstraint(constraint);             }         };         tomcat.addAdditionalTomcatConnectors(httpConnector());         return tomcat;     }      @Bean     public Connector httpConnector() {         Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");         connector.setScheme("http");         //Connector监听的http的端口号         connector.setPort(httpPort);         connector.setSecure(false);         //监听到http的端口号后转向到的https的端口号         connector.setRedirectPort(httpsPort);         return connector;     } 

本文发表于2018年04月06日 22:38
(c)注:本文转载自https://my.oschina.net/u/3491123/blog/1790458,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2131 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1