- 创建前置过滤器
package com.hx.apigeteway.filter; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpStatus; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE; @Component public class TokenFilter extends ZuulFilter { @Override public String filterType() { //过滤器类型 属于前缀 return PRE_TYPE; } @Override public int filterOrder() { //过滤器顺序 数字越小越靠前 return PRE_DECORATION_FILTER_ORDER - 1; } @Override public boolean shouldFilter() { // 设置为true 代表这个过滤器是否生效 return true; } //主要的处理逻辑的地方,我们做权限控制、日志等都是在这里。 @Override public Object run() throws ZuulException { RequestContext requestContext=RequestContext.getCurrentContext(); HttpServletRequest request = requestContext.getRequest(); //这里从请求头参数获取 //request.getHeader("token"); //这里从请求中参数获取 String token = request.getParameter("token"); if(StringUtils.isEmpty(token)){ requestContext.setSendZuulResponse(false); requestContext.setResponseStatusCode(HttpStatus.SC_UNAUTHORIZED); } return null; } }
- 创建后置过滤器
package com.hx.apigeteway.filter; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; import java.util.UUID; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.POST_TYPE; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.SEND_RESPONSE_FILTER_ORDER; @Component public class AddResponseHeaderFilter extends ZuulFilter { @Override public String filterType() { return POST_TYPE; } @Override public int filterOrder() { //FilterConstants return SEND_RESPONSE_FILTER_ORDER -1; } @Override public boolean shouldFilter() { return true; } @Override public Object run() throws ZuulException { RequestContext requestContext=RequestContext.getCurrentContext(); HttpServletResponse response = requestContext.getResponse(); response.setHeader("test", UUID.randomUUID().toString()); return null; } }
版权声明:本文为qq_40680190原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。