美文网首页
Spring Cloud Zuul 过滤器

Spring Cloud Zuul 过滤器

作者: 歌哥居士 | 来源:发表于2019-03-27 07:13 被阅读0次
    import com.netflix.zuul.ZuulFilter;
    import com.netflix.zuul.context.RequestContext;
    import com.netflix.zuul.exception.ZuulException;
    import org.springframework.http.HttpStatus;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.ServletRequestBindingException;
    import org.springframework.web.bind.ServletRequestUtils;
    
    /**
     * 自定义一个过滤器,请求中有accessToken就放行,否则返回401
     */
    @Component
    public class AccessFilter extends ZuulFilter {
    
        /**
         * pre:可以在请求被路由之前调用:身份认证、集群中选择请求的微服务、记录调试信息。
         * routing:在路由请求时候被调用。
         * post:在routing和error过滤器之后被调用:添加标准HTTP header。
         * error:处理请求时发生错误时被调用。
         */
        @Override
        public String filterType() {
            return "pre";
        }
    
        /**
         * 多个过滤器中执行顺序,越小越优先
         */
        @Override
        public int filterOrder() {
            return 0;
        }
    
        /**
         * 过滤器是否需要被执行
         */
        @Override
        public boolean shouldFilter() {
            return true;
        }
    
        /**
         * 过滤器的具体逻辑
         */
        @Override
        public Object run() throws ZuulException {
            RequestContext ctx = RequestContext.getCurrentContext();
            try {
                String accessToken = ServletRequestUtils.getStringParameter(ctx.getRequest(), "accessToken");
                if (null != accessToken) { // 通过
                    System.out.println("通过...");
                    return null;
                }
            } catch (ServletRequestBindingException e) {
                e.printStackTrace();
            }
            System.out.println("没有accessToken");
            ctx.setSendZuulResponse(false); // 停止路由
            ctx.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
            return null;
        }
    }
    

    访问:http://localhost:11000/provider/m1?accessToken=1

    相关文章

      网友评论

          本文标题:Spring Cloud Zuul 过滤器

          本文链接:https://www.haomeiwen.com/subject/dchhvqtx.html