Commit 735ebc30 authored by duanruiming's avatar duanruiming

[update] 解决包问题

parent 93976a77
package net.wanji.web.config;
import com.wanji.identity.auth.IdentityResourceServerConfig;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.HeaderMapRequestWrapper;
import net.wanji.common.utils.cache.IgniteClientCacheUtil;
import net.wanji.common.utils.cookie.CookieUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.security.web.context.SecurityContextPersistenceFilter;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import static net.wanji.common.framework.Constants.Cache.LOGIN_CACHE;
/**
* @Description: 资源服务器配置
* @Author
* @Date 2020/4/12 21:01
*/
@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Slf4j
public class ResourceServerConfig extends IdentityResourceServerConfig {
@Override
public void configure(HttpSecurity http) throws Exception {
// 放开全部
http.authorizeRequests()
.antMatchers(whiteList.toArray(new String[whiteList.size()])).permitAll()
.anyRequest().authenticated()
.and().cors()
.and().csrf().disable()
.addFilterBefore(new OncePerRequestFilter() {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String breakerToken = " ";
// 判断header里有没有authorization,有则赋值给breakertoken,没有则根据tokenid
if (!StringUtils.isEmpty(request.getHeader(HttpHeaders.AUTHORIZATION))) {
breakerToken = request.getHeader(HttpHeaders.AUTHORIZATION);
} else {
String tokenId = "";
// 移动端的tokenid在请求头里,pc端的在cookie里
String mobileTokenId = request.getHeader("tokenId");
if (!StringUtils.isEmpty(mobileTokenId)) {
tokenId = mobileTokenId;
} else {
tokenId = CookieUtil.getUid(request, "tokenId");
}
if (!StringUtils.isEmpty(tokenId)) {
try {
OAuth2AccessToken oAuth2AccessToken = (OAuth2AccessToken) IgniteClientCacheUtil.getValue(LOGIN_CACHE, tokenId);
breakerToken = oAuth2AccessToken.getTokenType() + " " + oAuth2AccessToken.getValue();
} catch (Exception e) {
e.printStackTrace();
}
}
}
HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(request);
if (!StringUtils.isEmpty(breakerToken)) {
//将cookie中的token放到header,供oauth鉴权使用
requestWrapper.addHeader(HttpHeaders.AUTHORIZATION, breakerToken);
}
try {
filterChain.doFilter(requestWrapper, response);
} catch (Exception e) {
log.error("配置信息错误:{}", e);
}
}
}, SecurityContextPersistenceFilter.class);
}
//访问白名单
private static final List<String> whiteList = new ArrayList<String>() {{
//swagger
add("/webjars/**");
add("/resources/**");
add("/swagger-ui.html");
add("/swagger-resources/**");
add("/v2/api-docs");
add("/getSwaggerToken");
add("/");
add("/**/*.html");
add("/**/*.htm");
add("/**/*.woff");
add("/**/*.woff2");
add("/**/*.ttf");
add("/**/*.svg");
add("/**/*.css");
add("/**/*.png");
add("/**/*.jpg");
add("/**/*.gif");
add("/**/*.ico");
add("/**/*.json");
add("/**/*.js");
add("/**/*.txt");
add("/**");
}};
}
//package net.wanji.web.config;
//
//import com.wanji.identity.auth.IdentityResourceServerConfig;
//import lombok.extern.slf4j.Slf4j;
//import net.wanji.common.framework.rest.HeaderMapRequestWrapper;
//import net.wanji.common.utils.cache.IgniteClientCacheUtil;
//import net.wanji.common.utils.cookie.CookieUtil;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.http.HttpHeaders;
//import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
//import org.springframework.security.oauth2.common.OAuth2AccessToken;
//import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
//import org.springframework.security.web.context.SecurityContextPersistenceFilter;
//import org.springframework.web.filter.OncePerRequestFilter;
//
//import javax.servlet.FilterChain;
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//
//import static net.wanji.common.framework.Constants.Cache.LOGIN_CACHE;
//
///**
// * @Description: 资源服务器配置
// * @Author
// * @Date 2020/4/12 21:01
// */
//@Configuration
//@EnableResourceServer
//@EnableGlobalMethodSecurity(prePostEnabled = true)
//@Slf4j
//public class ResourceServerConfig extends IdentityResourceServerConfig {
//
// @Override
// public void configure(HttpSecurity http) throws Exception {
//
//// 放开全部
// http.authorizeRequests()
// .antMatchers(whiteList.toArray(new String[whiteList.size()])).permitAll()
// .anyRequest().authenticated()
// .and().cors()
// .and().csrf().disable()
// .addFilterBefore(new OncePerRequestFilter() {
// @Override
// protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
// String breakerToken = " ";
// // 判断header里有没有authorization,有则赋值给breakertoken,没有则根据tokenid
// if (!StringUtils.isEmpty(request.getHeader(HttpHeaders.AUTHORIZATION))) {
// breakerToken = request.getHeader(HttpHeaders.AUTHORIZATION);
// } else {
// String tokenId = "";
// // 移动端的tokenid在请求头里,pc端的在cookie里
// String mobileTokenId = request.getHeader("tokenId");
// if (!StringUtils.isEmpty(mobileTokenId)) {
// tokenId = mobileTokenId;
// } else {
// tokenId = CookieUtil.getUid(request, "tokenId");
// }
// if (!StringUtils.isEmpty(tokenId)) {
// try {
//
// OAuth2AccessToken oAuth2AccessToken = (OAuth2AccessToken) IgniteClientCacheUtil.getValue(LOGIN_CACHE, tokenId);
// breakerToken = oAuth2AccessToken.getTokenType() + " " + oAuth2AccessToken.getValue();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// }
// HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(request);
// if (!StringUtils.isEmpty(breakerToken)) {
// //将cookie中的token放到header,供oauth鉴权使用
// requestWrapper.addHeader(HttpHeaders.AUTHORIZATION, breakerToken);
// }
// try {
// filterChain.doFilter(requestWrapper, response);
// } catch (Exception e) {
// log.error("配置信息错误:{}", e);
// }
// }
// }, SecurityContextPersistenceFilter.class);
// }
//
// //访问白名单
// private static final List<String> whiteList = new ArrayList<String>() {{
// //swagger
// add("/webjars/**");
// add("/resources/**");
// add("/swagger-ui.html");
// add("/swagger-resources/**");
// add("/v2/api-docs");
// add("/getSwaggerToken");
// add("/");
// add("/**/*.html");
// add("/**/*.htm");
// add("/**/*.woff");
// add("/**/*.woff2");
// add("/**/*.ttf");
// add("/**/*.svg");
// add("/**/*.css");
// add("/**/*.png");
// add("/**/*.jpg");
// add("/**/*.gif");
// add("/**/*.ico");
// add("/**/*.json");
// add("/**/*.js");
// add("/**/*.txt");
// add("/**");
// }};
//}
......@@ -2,20 +2,10 @@ package net.wanji.web.config;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties;
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
import org.springframework.boot.actuate.endpoint.ExposableEndpoint;
import org.springframework.boot.actuate.endpoint.web.*;
import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpointsSupplier;
import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointsSupplier;
import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping;
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.util.ReflectionUtils;
import org.springframework.util.StringUtils;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
......@@ -27,8 +17,6 @@ import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
......@@ -61,22 +49,22 @@ public class Swagger2 {
.build();
}
@Bean
public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier, ServletEndpointsSupplier servletEndpointsSupplier, ControllerEndpointsSupplier controllerEndpointsSupplier, EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsProperties, WebEndpointProperties webEndpointProperties, Environment environment) {
List<ExposableEndpoint<?>> allEndpoints = new ArrayList();
Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
allEndpoints.addAll(webEndpoints);
allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
String basePath = webEndpointProperties.getBasePath();
EndpointMapping endpointMapping = new EndpointMapping(basePath);
boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment, basePath);
return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping, null);
}
private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) {
return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
}
// @Bean
// public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier, ServletEndpointsSupplier servletEndpointsSupplier, ControllerEndpointsSupplier controllerEndpointsSupplier, EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsProperties, WebEndpointProperties webEndpointProperties, Environment environment) {
// List<ExposableEndpoint<?>> allEndpoints = new ArrayList();
// Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
// allEndpoints.addAll(webEndpoints);
// allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
// allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
// String basePath = webEndpointProperties.getBasePath();
// EndpointMapping endpointMapping = new EndpointMapping(basePath);
// boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment, basePath);
// return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping, null);
// }
//
// private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) {
// return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
// }
@Bean
public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment