zuul业务检查相关模块

147 阅读2分钟

前言

在使用spring cloud进行微服务开发的过程中,因为微服务之间的访问只是对资源的访问,不应该有权限相关的检验,但是对外开放的服务是必须要对没有用户所能访问的资源与操作进行权限检验的。
而spring cloud的网关服务开源项目并没有很好地提供业务检查相关的处理模块,所以我在使用zuul进行网关开发的过程中根据自己的理解写了一套业务检查相关的代码。

简介

业务相关的权限检查因为每个微服务所需要的检查是不一样的,所以不同的微服务可能需要不同的检查,且同意微服务内不同的接口路径和HTTP方法的检查策略也可能是不同的,所以检查应该可以确切到每一个访问。

业务检查虽然是在网关进行检查的,但是为了降低耦合与提高内聚。实际检查的处理逻辑也应该是由微服务内部提供,并对外提供接口。我们在网关进行检查的时候也应该是请求相关的接口检查权限。

zuul权限检查模块的实现思路大致是可以在配置文件中配置微服务相关路由的检查器(实现BusinessChecker接口的实现类),根据检查内容抛出错误或者通过检查。

在代码的实现上时,提供BusinessChecker接口供需要检查的权限实现,拥有type(),order(),check(CheckContext ct)方法并且该接口默认实现了Comparable<BusinessChecker>,

  • type :返回改checker的type,用于在配置文件中配置路由相关处理器的type时使用
  • order :返回执行时的顺序
  • check :进行实际的检查内容,一般以抛出异常为检验错误。

CheckContext :是从Zull requestContext 切换过来的上下文,主要是为了与Zuul的解耦

CheckException :检查时可抛出的错误,包含Http status, BizCode, 错误信息。

CheckManager :管理根据路由获取相关Checker的管理类,首先根据相关配置获取个Checker的type,在根据type查找在spring中的相关bean,最后排序并返回改请求所对应的相关Check实体数组。

BusinessVerifyFilter :主要是衔接Check模块与Zuul之间的桥梁

CheckProperties :加载相关的配置文件

代码

zuul-biz-check