From 74d215499e4b6e6d77d9c65de92d04a1d303093a Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Sat, 23 Sep 2023 10:57:27 +0800
Subject: [PATCH] ws群发问题

---
 src/main/java/com/dji/sample/component/websocket/service/impl/WebSocketManageServiceImpl.java |    2 +-
 src/main/java/com/dji/sample/component/websocket/config/AuthPrincipalHandler.java             |    7 ++++++-
 src/main/java/com/dji/sample/component/AuthInterceptor.java                                   |    2 ++
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/dji/sample/component/AuthInterceptor.java b/src/main/java/com/dji/sample/component/AuthInterceptor.java
index 0d3b8f7..8b5fae8 100644
--- a/src/main/java/com/dji/sample/component/AuthInterceptor.java
+++ b/src/main/java/com/dji/sample/component/AuthInterceptor.java
@@ -21,6 +21,8 @@
 
     public static final String PARAM_TOKEN = "x-auth-token";
 
+    public static final String WORKSPACE_ID = "workspace-id";
+
     public static final String TOKEN_CLAIM = "customClaim";
 
     @Override
diff --git a/src/main/java/com/dji/sample/component/websocket/config/AuthPrincipalHandler.java b/src/main/java/com/dji/sample/component/websocket/config/AuthPrincipalHandler.java
index 05fbd2d..e444d6f 100644
--- a/src/main/java/com/dji/sample/component/websocket/config/AuthPrincipalHandler.java
+++ b/src/main/java/com/dji/sample/component/websocket/config/AuthPrincipalHandler.java
@@ -31,6 +31,7 @@
         if (request instanceof ServletServerHttpRequest) {
             HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();
             String token = servletRequest.getParameter(AuthInterceptor.PARAM_TOKEN);
+            String workspaceId = servletRequest.getParameter(AuthInterceptor.WORKSPACE_ID);
 
             if (!StringUtils.hasText(token)) {
                 return false;
@@ -42,6 +43,7 @@
             }
 
             servletRequest.setAttribute(AuthInterceptor.TOKEN_CLAIM, customClaim.get());
+            servletRequest.setAttribute(AuthInterceptor.WORKSPACE_ID, workspaceId);
             return true;
         }
         return false;
@@ -63,7 +65,10 @@
             CustomClaim claim = (CustomClaim) ((ServletServerHttpRequest) request).getServletRequest()
                     .getAttribute(AuthInterceptor.TOKEN_CLAIM);
 
-            return () -> claim.getWorkspaceId() + "/" + claim.getUserType() + "/" + claim.getId();
+            String workspaceId = (String) ((ServletServerHttpRequest) request).getServletRequest()
+                    .getAttribute(AuthInterceptor.WORKSPACE_ID);
+
+            return () -> workspaceId + "/" + claim.getUserType() + "/" + claim.getId();
         }
         return () -> null;
     }
diff --git a/src/main/java/com/dji/sample/component/websocket/service/impl/WebSocketManageServiceImpl.java b/src/main/java/com/dji/sample/component/websocket/service/impl/WebSocketManageServiceImpl.java
index 02e7925..a0070d4 100644
--- a/src/main/java/com/dji/sample/component/websocket/service/impl/WebSocketManageServiceImpl.java
+++ b/src/main/java/com/dji/sample/component/websocket/service/impl/WebSocketManageServiceImpl.java
@@ -75,7 +75,7 @@
         return RedisOpsUtils.hashKeys(key)
                 .stream()
                 .map(SESSIONS::get)
-//                .filter(this.getValueWithWorkspace(workspaceId)::contains)
+                .filter(this.getValueWithWorkspace(workspaceId)::contains)
                 .collect(Collectors.toSet());
     }
 

--
Gitblit v1.9.3