一、该问题的重现步骤是什么?
1. 对接一些第三方他们无法修改 Authorization -> Blade-Auth
2.
3.
二、你期待的结果是什么?实际看到的又是什么?
是否可以兼容 Authorization 和 Blade-Auth 的情况
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
package org.springblade.gateway.filter; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.gateway.provider.AuthProvider; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.http.HttpHeaders; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; /** * AuthorizationHeaderFilter * 为了兼容 Authorization Header 存在的Filter * * @author 郑查磊 */ @Slf4j @Component @AllArgsConstructor public class AuthorizationHeaderFilter implements GlobalFilter, Ordered { @Override public Monofilter(ServerWebExchange exchange, GatewayFilterChain chain) { // 1. 清洗请求头中from 参数 ServerHttpRequest request = exchange.getRequest() .mutate() .headers(this::authorizationToBladeAuth) .build(); return chain.filter(exchange.mutate().request(request).build()); } private void authorizationToBladeAuth(HttpHeaders headers) { String authorization = headers.getFirst("Authorization"); String bladeAuth = headers.getFirst(AuthProvider.AUTH_KEY); if (StringUtils.hasText(authorization) && !StringUtils.hasText(bladeAuth)) { headers.set(AuthProvider.AUTH_KEY, authorization); } } @Override public int getOrder() { return Integer.MIN_VALUE; } }
这样写会不会有什么问题
扫一扫访问 Blade技术社区 移动端