// Path: api-gateway/src/main/java/com/lanshiqin/apigateway/core/filter/pre/AccessFilter.java
// public class AccessFilter extends ZuulFilter {
// 
//     private static Logger logger = LoggerFactory.getLogger(AccessFilter.class);
// 
//     /**
//      * 过滤器的类型 pre表示请求在路由之前被过滤
//      * @return 类型
//      */
//     @Override
//     public String filterType() {
//         return "pre";
//     }
// 
//     /**
//      * 过滤器的执行顺序
//      * @return 顺序 数字越大表示优先级越低，越后执行
//      */
//     @Override
//     public int filterOrder() {
//         return 0;
//     }
// 
//     /**
//      * 过滤器是否会被执行
//      * @return true
//      */
//     @Override
//     public boolean shouldFilter() {
//         return true;
//     }
// 
//     /**
//      * 过滤逻辑
//      * @return 过滤结果
//      */
//     @Override
//     public Object run() {
//         RequestContext requestContext = RequestContext.getCurrentContext();
//         HttpServletRequest request = requestContext.getRequest();
// 
//         logger.info("send {} request to {}",request.getMethod(),request.getRequestURL().toString());
// 
//         Object accessToken = request.getHeader("Authorization");
//         if (accessToken==null){
//             logger.warn("Authorization token is empty");
//             requestContext.setSendZuulResponse(false);
//             requestContext.setResponseStatusCode(401);
//             requestContext.setResponseBody("Authorization token is empty");
//             return null;
//         }
//         logger.info("Authorization token is ok");
// 
// 
//         return null;
//     }
// 
// 
// 
// }


import com.lanshiqin.apigateway.core.filter.pre.AccessFilter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
package com.lanshiqin.apigateway;


/**
 * API网关服务
 * @ EnableZuulProxy 启用网关路由
 * @ EnableOAuth2Sso 启用OAuth2单点登录
 */
@SpringBootApplication
@EnableZuulProxy
@EnableOAuth2Sso
public class ApiGatewayApplication {

	public static void main(String[] args) {
		SpringApplication.run(ApiGatewayApplication.class, args);
	}

	/**
	 * 资源过滤器
	 * @return 资源过滤器
	 */
	@Bean
// Path: api-gateway/src/main/java/com/lanshiqin/apigateway/core/filter/pre/AccessFilter.java
// public class AccessFilter extends ZuulFilter {
// 
//     private static Logger logger = LoggerFactory.getLogger(AccessFilter.class);
// 
//     /**
//      * 过滤器的类型 pre表示请求在路由之前被过滤
//      * @return 类型
//      */
//     @Override
//     public String filterType() {
//         return "pre";
//     }
// 
//     /**
//      * 过滤器的执行顺序
//      * @return 顺序 数字越大表示优先级越低，越后执行
//      */
//     @Override
//     public int filterOrder() {
//         return 0;
//     }
// 
//     /**
//      * 过滤器是否会被执行
//      * @return true
//      */
//     @Override
//     public boolean shouldFilter() {
//         return true;
//     }
// 
//     /**
//      * 过滤逻辑
//      * @return 过滤结果
//      */
//     @Override
//     public Object run() {
//         RequestContext requestContext = RequestContext.getCurrentContext();
//         HttpServletRequest request = requestContext.getRequest();
// 
//         logger.info("send {} request to {}",request.getMethod(),request.getRequestURL().toString());
// 
//         Object accessToken = request.getHeader("Authorization");
//         if (accessToken==null){
//             logger.warn("Authorization token is empty");
//             requestContext.setSendZuulResponse(false);
//             requestContext.setResponseStatusCode(401);
//             requestContext.setResponseBody("Authorization token is empty");
//             return null;
//         }
//         logger.info("Authorization token is ok");
// 
// 
//         return null;
//     }
// 
// 
// 
// }


// Path: api-gateway/src/main/java/com/lanshiqin/apigateway/ApiGatewayApplication.java
import com.lanshiqin.apigateway.core.filter.pre.AccessFilter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;

package com.lanshiqin.apigateway;


/**
 * API网关服务
 * @ EnableZuulProxy 启用网关路由
 * @ EnableOAuth2Sso 启用OAuth2单点登录
 */
@SpringBootApplication
@EnableZuulProxy
@EnableOAuth2Sso
public class ApiGatewayApplication {

	public static void main(String[] args) {
		SpringApplication.run(ApiGatewayApplication.class, args);
	}

	/**
	 * 资源过滤器
	 * @return 资源过滤器
	 */
	@Bean
	public AccessFilter accessFilter(){