|
|
@@ -23,6 +23,8 @@ import java.util.concurrent.TimeUnit;
|
|
|
public class ThirdPartyAuthFilter implements GlobalFilter, Ordered {
|
|
|
|
|
|
private static final String THIRD_PARTY_AUTH = "third_party_auth";
|
|
|
+ private static final String TOKEN_LOCATION_HEADER = "header";
|
|
|
+ private static final String TOKEN_LOCATION_QUERY = "query";
|
|
|
|
|
|
@Autowired
|
|
|
private RedisCache redisCache;
|
|
|
@@ -52,22 +54,41 @@ public class ThirdPartyAuthFilter implements GlobalFilter, Ordered {
|
|
|
redisCache.setCacheObject(key, thirdPartyAuthToken, Integer.parseInt(gatewayRoutes.getAuthExpirationTime()), TimeUnit.MINUTES);
|
|
|
}
|
|
|
|
|
|
- // 构建新的请求并将access_token添加到查询参数中
|
|
|
+ // 根据配置确定token键名,默认为access_token
|
|
|
+ String tokenKey = StringUtils.isNotBlank(gatewayRoutes.getTokenKey()) ?
|
|
|
+ gatewayRoutes.getTokenKey() : "access_token";
|
|
|
+
|
|
|
ServerHttpRequest request = exchange.getRequest();
|
|
|
- URI uri = UriComponentsBuilder.fromUri(request.getURI())
|
|
|
- .queryParam("access_token", thirdPartyAuthToken)
|
|
|
- .build(true)
|
|
|
- .toUri();
|
|
|
+
|
|
|
+ // 根据tokenLocation配置决定将token添加到哪里
|
|
|
+ if (TOKEN_LOCATION_HEADER.equals(gatewayRoutes.getTokenLocation())) {
|
|
|
+ // 添加到请求头
|
|
|
+ ServerHttpRequest modifiedRequest = request.mutate()
|
|
|
+ .header(tokenKey, thirdPartyAuthToken)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ ServerWebExchange modifiedExchange = exchange.mutate()
|
|
|
+ .request(modifiedRequest)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ return chain.filter(modifiedExchange);
|
|
|
+ } else {
|
|
|
+ // 默认添加到查询参数
|
|
|
+ URI uri = UriComponentsBuilder.fromUri(request.getURI())
|
|
|
+ .queryParam(tokenKey, thirdPartyAuthToken)
|
|
|
+ .build(true)
|
|
|
+ .toUri();
|
|
|
|
|
|
- ServerHttpRequest modifiedRequest = request.mutate()
|
|
|
- .uri(uri)
|
|
|
- .build();
|
|
|
+ ServerHttpRequest modifiedRequest = request.mutate()
|
|
|
+ .uri(uri)
|
|
|
+ .build();
|
|
|
|
|
|
- ServerWebExchange modifiedExchange = exchange.mutate()
|
|
|
- .request(modifiedRequest)
|
|
|
- .build();
|
|
|
+ ServerWebExchange modifiedExchange = exchange.mutate()
|
|
|
+ .request(modifiedRequest)
|
|
|
+ .build();
|
|
|
|
|
|
- return chain.filter(modifiedExchange);
|
|
|
+ return chain.filter(modifiedExchange);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return chain.filter(exchange);
|