# API网关

# 网关的主要配置参数

  • server.port: 8000,默认网关端口
  • spring.cloud.gateway.routes: 网关路由 新增业务服务模块时,参照crm-example添加路由配置:
spring:
  cloud:
    gateway:
      routes: #配置路由路径
        - id: business-api-route
          uri: lb://crm-example
          predicates:
            - Path=/crm-example/**
          filters:
            - StripPrefix=1
            - PreserveHostHeader
1
2
3
4
5
6
7
8
9
10
11
  • diboot.gateway.anon-urls: 允许匿名访问的URLs
diboot:
  gateway:
    anon-urls:
      - "/*/login"
      - "/*/assets/**"
      - "/*/anon/**"
1
2
3
4
5
6

# 核心代码说明

# GatewayAuthorizationManager: 鉴权管理器

  • 鉴权规则: 从Redis缓存中获取 "资源URI" - "角色" 之间的映射关系,拦截请求uri进行匹配,检查当前用户是否有该对应角色决定是否可访问。
  • 注意: 为方便调试,默认开发模式下禁用了权限检查。如需开启可参考如下代码对照调整。
// 开发模式下,忽略权限检查
if(isDevelopmentMode()){
    log.info("开发模式已启用,权限检查将被忽略!");
    return Mono.just(new AuthorizationDecision(true));
}
1
2
3
4
5

# SecurityFilterConfig: 安全过滤器配置

配置网关的鉴权策略、匿名URL等。

# GatewayExceptionHandler: 全局异常处理类

统一处理"服务不可用"、"请求超时"、"server异常"等。