• 基础服务调用链路

    简要介绍下HZERO基础服务之间的关系以及调用链路,以帮助解决微服务中的一些常见问题及服务配置管理等。下面的链路调用图主要包含七个基础服务、一个鉴权组件、一个业务服务,将从 API 访问网关开始介绍相关流程。可重点关注下 hzero-gateway-helper 中的权限校验流程。

    查看大图

    注册中心

    所有服务都会注册到注册中心上,便于服务发现。hzero-register 是基于 Netflix Eureka 实现的注册中心,项目或产品上可根据实际情况选择其它的注册中心,如 Zookeeper、Nacos、Formula 等。

    配置中心

    所有服务都可以向配置中心拉取配置,也可以通过配置中心动态更新服务配置。hzero-config 是基于 Spring cloud config 实现的配置中心,项目或产品上可根据实际情况选择其它的配置中心,如 Nacos、Apollo、Formula 等。

    API调用链路

    ① API调用

    ② API鉴权

    ③ 获取登录用户

    ④ 返回用户 Principal

    ⑤ 返回状态码及JwtToken

    ⑥ 路由到业务服务

    ⑦ 返回数据

    服务注册监听

    服务启动时,会向注册中心注册自己,hzero-admin 服务监听到服务注册后,会拉取服务文档信息,并做如下事情:

    如果服务启动时,未及时更新权限或Swagger文档信息,由于有心跳机制,可等注册中心实例下线后再重启服务。

    鉴权常见状态码

    状态码 含义
    SUCCESS_PASS_SITE 平台层接口权限校验通过,即用户拥有该平台级API权限
    SUCCESS_PASS_ORG 租户层接口权限校验通过,即用户拥有该租户级API权限
    SUCCESS_SKIP_PATH 该接口为gateway-helper设置的跳过权限校验的接口,允许通过
    SUCCESS_PUBLIC_ACCESS 公共接口,允许访问
    SUCCESS_LOGIN_ACCESS 登录可访问接口且已经登录,允许访问
    SUCCESS_ADMIN 超级管理员用户,且接口为非内部接口,允许访问
    PERMISSION_WITH_IN 内部接口禁止访问,只允许服务内部调用
    PERMISSION_MISMATCH 未找到与该请求相匹配的权限,Redis缓存或数据库中没有该API
    PERMISSION_NOT_PASS 该登录用户没有此接口访问权限
    PERMISSION_NOT_PASS_ORG 登录用户没有在此租户下的此接口访问权限
    PERMISSION_ACCESS_TOKEN_NULL 请求头部没有access_token
    PERMISSION_ACCESS_TOKEN_INVALID accessToken不合法
    PERMISSION_ACCESS_TOKEN_EXPIRED accessToken已过期
    PERMISSION_GET_USE_DETAIL_FAILED 通过access_token从oauthServer获取userDetails失败
    EXCEPTION_GATEWAY_HELPER gateway-helper 发生异常
    API_ERROR_ORG_ID 接口异常。租户级接口路径必须包含organization_id
    PERMISSION_SERVICE_ROUTE 未找到该请求对应的路由,请在路由管理页面添加路由