diff --git a/modules/core/src/main/java/com/jeesite/modules/config/web/SchemeHttpsConfig.java b/modules/core/src/main/java/com/jeesite/modules/config/web/SchemeHttpsConfig.java new file mode 100644 index 00000000..9345108f --- /dev/null +++ b/modules/core/src/main/java/com/jeesite/modules/config/web/SchemeHttpsConfig.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + */ +package com.jeesite.modules.config.web; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; + +/** + * 将请求协议转换为 https + * @author ThinkGem + * @version 2020年1月21日 + */ +@Configuration +@ConditionalOnProperty(name="server.schemeHttps", havingValue="true", matchIfMissing=false) +public class SchemeHttpsConfig { + + @Bean + public FilterRegistrationBean schemeFilterRegistrationBean() { + FilterRegistrationBean bean = new FilterRegistrationBean<>(); + bean.setOrder(Ordered.HIGHEST_PRECEDENCE); + bean.setFilter(new Filter() { + + @Override + public void init(FilterConfig filterConfig) throws ServletException {} + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request) { + + @Override + public String getScheme() { + return "https"; + } + + @Override + public StringBuffer getRequestURL() { + StringBuffer sb = super.getRequestURL(); + if ("http:".equals(sb.substring(0, 5))){ + return sb.replace(0, 5, "https:"); + }else{ + return sb; + } + } + + }, response); + } + + @Override + public void destroy() {} + }); + bean.addUrlPatterns("/*"); + return bean; + } + +} diff --git a/web/src/main/resources/config/application.yml b/web/src/main/resources/config/application.yml index 60488f01..9a2f3af0 100644 --- a/web/src/main/resources/config/application.yml +++ b/web/src/main/resources/config/application.yml @@ -26,6 +26,9 @@ server: tomcat: uri-encoding: UTF-8 + # 将请求协议转换为 https + schemeHttps: false + #======================================# #========== Database sttings ==========# #======================================#