• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Y-wee
博客园    首页    新随笔    联系   管理     

zuul配置过滤器

zuul配置过滤器

zuul过滤器类型

  • pre

    • 可以在请求被路由之前调用。适用于身份认证的场景,认证通过后再继续执行下面的流程
  • route

    • 在路由请求时被调用。适用于灰度发布场景,在将要路由的时候可以做一些自定义的逻辑。
  • post

    • 在 route 和 error 过滤器之后被调用。这种过滤器将请求路由到达具体的服务之后执行。适用于需要添加响应头,记录响应日志等应用场景。
  • error

    • 处理请求时发生错误时被调用。在执行过程中发送错误时会进入 error 过滤器,可以用来统一记录错误信息。

如何配置:继承 com.netflix.zuul.ZuulFilter

package com.yl.filter;

import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;

@Component
public class ZuulFilter extends com.netflix.zuul.ZuulFilter {

   /*
    * 指明过滤器类型,它是一个PRE过滤器
    * */
    @Override
    public String filterType() {
        return FilterConstants.PRE_TYPE;
    }

   /*
    * 同一个过滤器类型的执行顺序
    * */
    @Override
    public int filterOrder() {
        return 1;
    }

   /*
    * 是否作拦截处理
    * */
    @Override
    public boolean shouldFilter() {
        return true;
    }

   /*
    * 过滤器的业务逻辑处理
    * */
    @Override
    public Object run() throws ZuulException {
        RequestContext context= RequestContext.getCurrentContext();
        //获取http的request对象
        HttpServletRequest request=context.getRequest();
        //获取请求参数:token
        String token=request.getParameter("token");

        System.out.println("zuul filter token="+token);

        //token如果有数据,并且等于1234,则允许访问,否则拦截处理
        if(token!=null && token.equals("1234")) {
            return null;
        }else {
            //如何实现拦截处理
            RequestContext ctx = RequestContext.getCurrentContext();
            //设置为false:不再转发请求到目标服务
            ctx.setSendZuulResponse(false);
            ctx.set("sendForwardFilter.ran", true);
            ctx.setResponseBody("token error");
            return null;
        }
    }
}
记得快乐
posted @ 2020-12-15 19:07  Y-wee  阅读(399)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3