spring cloud gateway全局過濾器 向request header中放數據

exchange.getRequest().getHeaders().set(); 是不能向 headers中放文件的

這時配置一個gateway全局過濾器  filter中 做了向 header放數據

/**
 * @Description  全局過濾器 在這裏可以實現記錄日誌和訪問權限校驗等
 * @Author [email protected]
 * @Created Date: 2018/7/11 14:20
 * @ClassName AuthSignatureFilter
 * @Version: 1.0
 */
@Component
public class AuthSignatureFilter implements GlobalFilter, Ordered {

    static Logger logger = LoggerFactory.getLogger(AuthSignatureFilter.class);

    /**
     * 全局過濾器 核心方法
     * @param exchange
     * @param chain
     * @return
     */
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        logger.info("request = {}",JSONArray.toJSONString( exchange.getRequest()) );
        String token = exchange.getRequest().getQueryParams().getFirst("authToken");
        //向headers中放文件,記得build
        ServerHttpRequest host = exchange.getRequest().mutate().header("a", "888").build();
        //將現在的request 變成 change對象 
        ServerWebExchange build = exchange.mutate().request(host).build();
        return chain.filter(build);
    }

    @Override
    public int getOrder() {
        return -200;
    }
}

這樣發送給路由的request中就放了我們自定義的數據了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章