# 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
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
2
3
4
5
6
# 核心代码说明
# GatewayAuthorizationManager: 鉴权管理器
- 鉴权规则: 从Redis缓存中获取 "资源URI" - "角色" 之间的映射关系,拦截请求uri进行匹配,检查当前用户是否有该对应角色决定是否可访问。
- 注意: 为方便调试,默认开发模式下禁用了权限检查。如需开启可参考如下代码对照调整。
// 开发模式下,忽略权限检查
if(isDevelopmentMode()){
log.info("开发模式已启用,权限检查将被忽略!");
return Mono.just(new AuthorizationDecision(true));
}
1
2
3
4
5
2
3
4
5
# SecurityFilterConfig: 安全过滤器配置
配置网关的鉴权策略、匿名URL等。
# GatewayExceptionHandler: 全局异常处理类
统一处理"服务不可用"、"请求超时"、"server异常"等。