Commit 735ebc30 authored by duanruiming's avatar duanruiming

[update] 解决包问题

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