版权声明:欢迎关注我的微信公众号 java持续实践,获取最新学习资料 https://blog.csdn.net/qq_33229669/article/details/87892575
一. 前台web请求头网关转发
由于web前台项目,对权限要求不高, 因此对于需要的请求头信息,只需做转发就行了.
在tensquare_web模块中, 添加filer.
路径如下com.tensquare.web.filter.WebFilter
Filter的内容如下. 主要的思路为在经过网关的过滤器时, 获取头信息,并调用addZuulRequestHeader
方法,把头信息进行转发即可.
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
/**
* 类名称:WebFilter
* 类描述: 前台项目的网关转发的filter
*
* @author: taohongchao
* 创建时间:2019/2/23 14:55
* Version 1.0
*/
@Component
public class WebFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() throws ZuulException {
//得到Reuest的上下文
RequestContext currentContext = RequestContext.getCurrentContext();
// 获取request 域
HttpServletRequest request = currentContext.getRequest();
//得到头信息
String header = request.getHeader("Authorization");
//判断是否有头信息
if (StringUtils.isNotBlank(header)) {
//如果获取到的头信息不为空,那么就把头信息传递给下去
currentContext.addZuulRequestHeader("Authorization",header);
}
return null;
}
}
二.请求头信息转发的测试
开启tensquare_eureka,tensquare_base,tensquare_web的服务
发送如下的get请求
http://localhost:9012/base/label
在tensquare_base的控制台中,可以看到接收到了请求头信息,代表在网关的过滤器中,成功进行了请求头信息的转发.