涉及到的包:
import com.netflix.zuul.context.RequestContext;
import javax.servlet.http.HttpServletRequest;
public Object run() throws ZuulException {
RequestContext currentContext = RequestContext.getCurrentContext();
HttpServletRequest request = currentContext.getRequest();
HttpServletResponse response = currentContext.getResponse();
String token = request.getParameter("token");//获取出发网关url地址中的token请求参数的值。模仿获取密码。http://localhost:15001/04userprovider-eureka/provider/user/1?token=1
if (Integer.valueOf(token)==1) {//测测试token这个参数等不等于1,等于1就通过,不等于1就走下面,不通过并且在页面输出老王:第一贱
currentContext.setSendZuulResponse(true);//true意味着放行。
return null;
} else {
response.setContentType("text/html;charset=utf-8");
currentContext.setResponseBody("老王:第一贱");
System.err.println("前置过滤器first执行了");
//拦截请求,拦截请求不会影响后面的过滤器的执行
currentContext.setSendZuulResponse(false);//false意味着不放行。其实就是向map中存放了一个值为false。这里设置的false也就导致SecondFilter、ThirdFilter中的shouldFilter方法接受的值为false,也就是这两个过滤器都不执行
return null;
}
// return null;//要如果上面不写,统一写在这里会包空指针,不知道为啥。这里好像没什么实际意义。。。。。。。。null就代表不放行,页面返回的数据就是这里设置的
}