黑马十次方项目day08-06 前台web请求头网关转发

版权声明:欢迎关注我的微信公众号 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的控制台中,可以看到接收到了请求头信息,代表在网关的过滤器中,成功进行了请求头信息的转发.

猜你喜欢

转载自blog.csdn.net/qq_33229669/article/details/87892575