xuhy
2024-08-19 e1e93392af81a6c347d60c8eebbc8306bb074ce3
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/SignFilter.java
@@ -1,6 +1,7 @@
package com.ruoyi.gateway.filter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.constant.HttpStatus;
@@ -47,13 +48,6 @@
public class SignFilter implements GlobalFilter, Ordered {
    private static final Logger log = LoggerFactory.getLogger(SignFilter.class);
    // 排除过滤的 uri 地址,nacos自行添加
    @Autowired
    private IgnoreWhiteProperties ignoreWhite;
    @Autowired
    private RedisService redisService;
    @Value("${security.sign}")
    private boolean parameter_signature;
@@ -62,7 +56,7 @@
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest();
        ServerHttpRequest.Builder mutate = request.mutate();
        HttpMethod method = request.getMethod();
        if(method != HttpMethod.POST){
            return chain.filter(exchange.mutate().request(mutate.build()).build());
@@ -87,8 +81,8 @@
        log.error("[签名异常处理]请求路径:{}", exchange.getRequest().getPath());
        return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.BAD_REQUEST);
    }
    /**
     * 校验签名
     * @return
@@ -119,9 +113,9 @@
                            .build());
        });
    }
    /**
     * 签名校验
     * @return
@@ -137,8 +131,8 @@
        System.err.println("签名值:" + signUrlEncode);
        return false;
    }
    /**
     * 组装签名路径
     * @param params
@@ -156,6 +150,10 @@
        // 构造签名键值对的格式
        StringBuilder sb = new StringBuilder();
        for (String k : keySet) {
            Object o = params.get(k);
            if(o instanceof JSONObject || o instanceof JSONArray){
                continue;
            }
            String v = params.getString(k);
            if(StringUtils.isNotEmpty(v)){
                sb.append(k + "=" + v + "&");