在springcloud项目中,权限认证逻辑一般放在请求路由之前,如果认证通过,则会执行route类型的过滤器,访问微服务获取数据。如果认证未通过,则要设置不进行路由,从而直接响应给客户端。
过滤器详细介绍可参考往期文章:springcloud zuul源码分析:内置过滤器
因此,我们通过自定义一个前置过滤器,来实现权限认证的逻辑。
- 首先继承抽象类
ZuulFilter
,实现filterType()
,filterOrder()
,shouldFilter()
,run()
四个抽象方法。 filterType()
返回"pre"
定义过滤器为前置过滤器。- 方法
run()
中是执行逻辑,RequestContext.getCurrentContext()
获取当前上下文实例ctx
,如果认证不通过,可设置ctx.setSendZuulResponse(false)
阻止请求进行路由。 - 前置过滤器内也可以对请求参数进行修改或添加。
下面是案例代码:
1 |
|