|
|
@@ -21,7 +21,7 @@ import java.io.IOException;
|
|
21
|
21
|
import java.nio.charset.StandardCharsets;
|
|
22
|
22
|
|
|
23
|
23
|
/**
|
|
24
|
|
- * JWT 鉴权过滤器:保护 /api/v1/mp/** 接口(auth 匿名除外)。
|
|
|
24
|
+ * JWT 鉴权过滤器:保护 /api/v1/mp/** 接口(auth、health 等匿名路径除外)。
|
|
25
|
25
|
*/
|
|
26
|
26
|
@Component
|
|
27
|
27
|
@Order(Ordered.HIGHEST_PRECEDENCE + 20)
|
|
|
@@ -29,6 +29,12 @@ public class JwtAuthFilter extends OncePerRequestFilter {
|
|
29
|
29
|
|
|
30
|
30
|
private static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();
|
|
31
|
31
|
|
|
|
32
|
+ /** 无需 JWT 的 mp 接口路径 */
|
|
|
33
|
+ private static final String[] ANONYMOUS_PATTERNS = {
|
|
|
34
|
+ "/api/v1/mp/auth/**",
|
|
|
35
|
+ "/api/v1/mp/health"
|
|
|
36
|
+ };
|
|
|
37
|
+
|
|
32
|
38
|
private final JwtTokenService jwtTokenService;
|
|
33
|
39
|
private final ObjectMapper objectMapper;
|
|
34
|
40
|
|
|
|
@@ -43,7 +49,12 @@ public class JwtAuthFilter extends OncePerRequestFilter {
|
|
43
|
49
|
if (!path.startsWith("/api/v1/mp/")) {
|
|
44
|
50
|
return true;
|
|
45
|
51
|
}
|
|
46
|
|
- return PATH_MATCHER.match("/api/v1/mp/auth/**", path);
|
|
|
52
|
+ for (String pattern : ANONYMOUS_PATTERNS) {
|
|
|
53
|
+ if (PATH_MATCHER.match(pattern, path)) {
|
|
|
54
|
+ return true;
|
|
|
55
|
+ }
|
|
|
56
|
+ }
|
|
|
57
|
+ return false;
|
|
47
|
58
|
}
|
|
48
|
59
|
|
|
49
|
60
|
@Override
|