一、该问题的重现步骤是什么?
1. 对接一些第三方他们无法修改 Authorization -> Blade-Auth
2.
3.
二、你期待的结果是什么?实际看到的又是什么?
是否可以兼容 Authorization 和 Blade-Auth 的情况
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
你这个需要修改系统的逻辑了。
org.springblade.core.secure.interceptor.BasicInterceptor
org.springblade.core.secure.interceptor.TokenInterceptor,主要是这两个类。
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 Mono<Void> filter(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技术社区 移动端