File tree Expand file tree Collapse file tree
java/com/github/cadecode/uniboot/gateway/filter Expand file tree Collapse file tree Original file line number Diff line number Diff line change 22
33import org .springframework .cloud .gateway .filter .GatewayFilterChain ;
44import org .springframework .cloud .gateway .filter .GlobalFilter ;
5+ import org .springframework .core .annotation .Order ;
56import org .springframework .http .server .reactive .ServerHttpRequest ;
67import org .springframework .stereotype .Component ;
78import org .springframework .web .server .ServerWebExchange ;
1314 * @author Cade Li
1415 * @since 2023/8/8
1516 */
17+ @ Order (1 )
1618@ Component
1719public class RequestHeaderFilter implements GlobalFilter {
1820
21+ public static final String HEAD_SOURCE = "from-source" ;
22+
23+ public static final String HEAD_USER_DETAILS = "inner-user-details" ;
24+
1925 @ Override
2026 public Mono <Void > filter (ServerWebExchange exchange , GatewayFilterChain chain ) {
2127 // 去掉内部调用专用的请求头,防止伪造
2228 ServerHttpRequest request = exchange .getRequest ().mutate ()
2329 .headers (h -> {
24- h .remove ("from-source" );
25- h .remove ("inner-user-details" );
30+ h .remove (HEAD_SOURCE );
31+ h .remove (HEAD_USER_DETAILS );
2632 })
2733 .build ();
2834 return chain .filter (exchange .mutate ().request (request ).build ());
Original file line number Diff line number Diff line change 1+ package com .github .cadecode .uniboot .gateway .filter ;
2+
3+ import cn .hutool .core .lang .UUID ;
4+ import org .slf4j .MDC ;
5+ import org .springframework .cloud .gateway .filter .GatewayFilterChain ;
6+ import org .springframework .cloud .gateway .filter .GlobalFilter ;
7+ import org .springframework .core .annotation .Order ;
8+ import org .springframework .http .server .reactive .ServerHttpRequest ;
9+ import org .springframework .stereotype .Component ;
10+ import org .springframework .web .server .ServerWebExchange ;
11+ import reactor .core .publisher .Mono ;
12+
13+ /**
14+ * 用于添加 trace id 的过滤器
15+ *
16+ * @author Cade Li
17+ * @since 2023/8/10
18+ */
19+ @ Order (0 )
20+ @ Component
21+ public class TraceInfoFilter implements GlobalFilter {
22+
23+ public static final String HEAD_TRACE_ID = "trace-id" ;
24+
25+ @ Override
26+ public Mono <Void > filter (ServerWebExchange exchange , GatewayFilterChain chain ) {
27+ String traceId = UUID .fastUUID ().toString (true );
28+ ServerHttpRequest request = exchange .getRequest ().mutate ()
29+ .headers (h -> {
30+ MDC .put (HEAD_TRACE_ID , traceId );
31+ h .set (HEAD_TRACE_ID , traceId );
32+ })
33+ .build ();
34+ exchange .getResponse ().getHeaders ().set (HEAD_TRACE_ID , traceId );
35+ return chain .filter (exchange .mutate ().request (request ).build ());
36+ }
37+ }
Original file line number Diff line number Diff line change 2424
2525 <!-- 输出格式-->
2626 <property name =" consolePattern"
27- value =" %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%-15thread]) %highlight(%-5level) %cyan(%-50logger{50}) : %msg%n" />
27+ value =" %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%-15thread]-%X{trace-id} ) %highlight(%-5level) %cyan(%-50logger{50}) : %msg%n" />
2828 <!-- 不带色彩的格式用以输出到文件-->
29- <property name =" filePattern" value =" %d{yyyy-MM-dd HH:mm:ss.SSS} [%-15thread] %-5level %-50logger{50} : %msg%n" />
29+ <property name =" filePattern" value =" %d{yyyy-MM-dd HH:mm:ss.SSS} [%-15thread]-%X{trace-id} %-5level %-50logger{50} : %msg%n" />
3030
3131 <!-- 控制台输出日志-->
3232 <appender name =" consoleAppender" class =" ch.qos.logback.core.ConsoleAppender" >
You can’t perform that action at this time.
0 commit comments