Преглед изворни кода

gateway 的 GlobalTokenFilter 中添加对浏览器指纹的获取, 浏览器指纹存放在 cookie 的 fp 字段中

reghao пре 7 месеци
родитељ
комит
3fc348e7f3

+ 16 - 2
gateway/src/main/java/cn/reghao/tnb/gateway/token/GlobalTokenFilter.java

@@ -29,7 +29,9 @@ import reactor.core.publisher.Mono;
 import java.nio.charset.StandardCharsets;
 import java.security.interfaces.RSAPublicKey;
 import java.util.List;
+import java.util.Map;
 import java.util.function.Consumer;
+import java.util.stream.Collectors;
 
 /**
  * 检查 JWT token(若存在) 是否过期
@@ -104,7 +106,7 @@ public class GlobalTokenFilter implements GlobalFilter, Ordered {
         }
 
         MultiValueMap<String, HttpCookie> cookies = request.getCookies();
-        for (List<HttpCookie> list : cookies.values()) {
+        /*for (List<HttpCookie> list : cookies.values()) {
             for (HttpCookie cookie : list) {
                 String name = cookie.getName();
                 if (name.equalsIgnoreCase(cookieName)) {
@@ -112,7 +114,19 @@ public class GlobalTokenFilter implements GlobalFilter, Ordered {
                     return new UserData("cookie", userCookie);
                 }
             }
-        }
+        }*/
+        Map<String, String> cookieMap = cookies.values().stream()
+                .map(list -> list.get(0))
+                .collect(Collectors.toMap(HttpCookie::getName, HttpCookie::getValue));
+        String value = cookieMap.get(cookieName);
+        if (value != null) {
+            return new UserData("cookie", value);
+        }/* else {
+            value = cookieMap.get("fp");
+            if (value != null) {
+                System.out.printf("fingerprint -> %s\n", value);
+            }
+        }*/
 
         return null;
     }