springcloud实战之12 路由网关拦截器
为了能够在api网关中实现对客户端请求的校验,我们将继续介绍spring cloud zuul的另外一个核心功能:请求过滤。zuul允许开发这在api-gateway网关上通过定义过滤器来实现对请求的核心拦截与过滤,实现的方法非常简单。重构工程(springcloud-server-api-gateway)新建过滤类public class AccessFilter extends ZuulFil
·
为了能够在api网关中实现对客户端请求的校验,我们将继续介绍spring cloud zuul的另外一个核心功能:请求过滤。zuul允许开发这在api-gateway网关上通过定义过滤器来实现对请求的核心拦截与过滤,实现的方法非常简单。
重构工程(springcloud-server-api-gateway)
新建过滤类
public class AccessFilter extends ZuulFilter {
private final Logger _logger = LoggerFactory.getLogger(this.getClass()) ;
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext() ;
HttpServletRequest request = ctx.getRequest() ;
_logger.info("send {} to {}",request.getMethod(),request.getRequestURL().toString());
Object token = request.getParameter("token") ;
if(null == token){
_logger.error("token is null ...");
ctx.setSendZuulResponse(false);
ctx.setResponseStatusCode(401);
}else{
_logger.info("access token is ok!!!");
}
return null;
}
}
注册过滤器
@Configuration
public class ApiGatewayConfig {
@Bean
public AccessFilter accessFilter(){
return new AccessFilter();
}
}
调用效果图
调用原来的接口,
调用地址:http://localhost:8004/api-b/api/rest/getMessage
调用地址:http://localhost:8004/api-b/api/rest/getMessage?token=sss
源码
springcloud-server-api-gateway
历史文章
springcloud实战之1 技术选型:dubbo还是springcloud
springcloud实战之2 服务注册与发现(eureka实现)
springcloud实战之3 高可用服务注册中心(eureka集群)
springcloud实战之8 断路器-仪表盘-单例监控(Hystrix)
springcloud实战之9断路器-集群监控(turbine)
更多推荐
已为社区贡献3条内容
所有评论(0)