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.cloud.netflix.zuul.filters.support.FilterConstants; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; @Component public class LoginFilter extends ZuulFilter { //类型 @Override public String filterType() { // pre :前置过滤器 // route :routing to an origin // post :后置过滤器 // error :当执行上述3个 出错时 进入error ;error执行完 ,再进入post //过滤器常量 return FilterConstants.PRE_TYPE; } //优先级 @Override public int filterOrder() { return FilterConstants.PRE_DECORATION_FILTER_ORDER; } //是否启用过滤器 @Override public boolean shouldFilter() { //开启过滤 return true; } //执行过滤器 @Override public Object run() throws ZuulException { //获取请求上下文 RequestContext currentContext = RequestContext.getCurrentContext(); //获取request HttpServletRequest request = currentContext.getRequest(); //获取参数 String token = request.getParameter("login-token"); //判断 if(StringUtils.isBlank(token)){ //false 拦截 true 放行 (默认是true) currentContext.setSendZuulResponse(false); //HttpStatus.java 状态码 currentContext.setResponseStatusCode(HttpStatus.FORBIDDEN.value()); } return null; } }
zuul 过滤器
猜你喜欢
转载自blog.csdn.net/mobin518/article/details/87966421
今日推荐
周排行