之前我写过一篇文章Spring Cloud Zuul(路由转发与过滤器)里边大概讲解了zuul的路由转发和过滤器(拦截器),这篇文章我们实践一下zuul的过滤器在项目中的使用。

我们一般在项目中用网关要做很多的事情,一般有用户鉴权,路由转发,统一的错误返回格式等等

细化来分的话 我们可分三类过滤器。PreFilter、PostFilter、ErrorFilter。(当然可以在细化一个RoleFilter,一般情况下,在配置文件中配置就够了)

PreFilter 可以理解为前置拦截,在这里边你可以做一些请求前要做的事情,比如用户鉴权,当然如果你们项目是前后端分离的情况下,你还要放掉他们的OPTIONS请求。

具体的PreFilter代码如下:

PreFilter其大概逻辑为默认登录路由不进行拦截,直接进入后台服务,其他请求都要从header中获取Authorization,然后从redis根据Authorization查找用户信息,然后再把用户信息set到zuul的request中供后台服务使用。

现在我们有一个请求,成功调用到了后台的某一个服务,这样他就已经到了PostFilter,在这个过滤器中你可以捕获post异常进行拦截统一返回处理。(比如你现在调用的某一个服务,而这个服务抛了一个异常并没有处理,那这个PreFilter就可以上场了)

详细代码:

PostFilter的大概逻辑就是服务端报错,这边统一向消费者给出报错信息。当然他还可以做更多的事情。

ErrorFilter则为异常过滤器,只要是zuul报错了都会到这个里边来,包括上边的PostFilter,他报错了也会到这个过滤器里来。

我们在这个拦截器里可用记录报错日志并且也可以统一给消费者给出统一报错信息。

具体代码如下:

这里JsonUtil.sendJsonMessage的方法是:

 



之前我写过一篇文章Spring Cloud Zuul(路由转发与过滤器)里边大概讲解了zuul的路由转发和过滤器(拦截器),这篇文章我们实践一下zuul的过滤器在项目中的使用。

我们一般在项目中用网关要做很多的事情,一般有用户鉴权,路由转发,统一的错误返回格式等等

细化来分的话 我们可分三类过滤器。PreFilter、PostFilter、ErrorFilter。(当然可以在细化一个RoleFilter,一般情况下,在配置文件中配置就够了)

PreFilter 可以理解为前置拦截,在这里边你可以做一些请求前要做的事情,比如用户鉴权,当然如果你们项目是前后端分离的情况下,你还要放掉他们的OPTIONS请求。

具体的PreFilter代码如下:

PreFilter其大概逻辑为默认登录路由不进行拦截,直接进入后台服务,其他请求都要从header中获取Authorization,然后从redis根据Authorization查找用户信息,然后再把用户信息set到zuul的request中供后台服务使用。

现在我们有一个请求,成功调用到了后台的某一个服务,这样他就已经到了PostFilter,在这个过滤器中你可以捕获post异常进行拦截统一返回处理。(比如你现在调用的某一个服务,而这个服务抛了一个异常并没有处理,那这个PreFilter就可以上场了)

详细代码:

PostFilter的大概逻辑就是服务端报错,这边统一向消费者给出报错信息。当然他还可以做更多的事情。

ErrorFilter则为异常过滤器,只要是zuul报错了都会到这个里边来,包括上边的PostFilter,他报错了也会到这个过滤器里来。

我们在这个拦截器里可用记录报错日志并且也可以统一给消费者给出统一报错信息。

具体代码如下:

这里JsonUtil.sendJsonMessage的方法是: