From fd7dc732ba009ec8aa8308f3270e5ffdf084f2a7 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 05 十一月 2025 15:00:04 +0800
Subject: [PATCH] init

---
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketAuthHandler.java |  446 +++++++++++++++++++++++++++----------------------------
 1 files changed, 222 insertions(+), 224 deletions(-)

diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketAuthHandler.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketAuthHandler.java
index 77ae9f0..ce5e7d2 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketAuthHandler.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketAuthHandler.java
@@ -1,224 +1,222 @@
-package com.ruoyi.web.controller.webSocket;
-
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.core.domain.model.LoginUserApplet;
-import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.system.model.TAppUser;
-import com.ruoyi.system.service.TAppUserService;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.Jwts;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
-
-import java.util.Map;
-
-/**
- * WebSocket认证处理器
- * 处理WebSocket连接的用户认证逻辑
- */
-@Component
-@Slf4j
-public class WebSocketAuthHandler {
-
-
-    @Autowired
-    private RedisCache redisCache;
-    
-    // 令牌秘钥
-    @Value("${token.secret}")
-    private String secret;
-
-    /**
-     * 验证用户认证信息
-     * @param appUserId 用户ID
-     * @param token 认证令牌(可选)
-     * @return 认证结果
-     */
-    public AuthResult authenticateUser(String appUserId, String token) {
-        try {
-            if (appUserId == null || appUserId.trim().isEmpty()) {
-                return AuthResult.failure("用户ID不能为空");
-            }
-
-
-            return AuthResult.success();
-        } catch (Exception e) {
-            log.error("用户认证失败,用户ID: {}, 错误: {}", appUserId, e.getMessage(), e);
-            return AuthResult.failure("认证过程中发生错误: " + e.getMessage());
-        }
-    }
-
-    /**
-     * 验证token
-     * @param appUserId 用户ID
-     * @param token 令牌
-     * @return 是否有效
-     */
-    private boolean validateToken(String appUserId, String token) {
-        try {
-            if (!StringUtils.hasText(token)) {
-                log.debug("用户 {} 未提供token,跳过token验证", appUserId);
-                return true; // 如果没有提供token,允许通过(可以根据业务需求调整)
-            }
-            
-            // 移除Bearer前缀
-            if (token.startsWith(Constants.TOKEN_PREFIX)) {
-                token = token.replace(Constants.TOKEN_PREFIX, "");
-            }
-            
-            // 解析JWT token
-            Claims claims = parseToken(token);
-            if (claims == null) {
-                log.warn("用户 {} 的token解析失败", appUserId);
-                return false;
-            }
-            
-            // 从token中获取用户标识
-            String uuid = (String) claims.get(Constants.LOGIN_USER_APPLET_KEY);
-            if (!StringUtils.hasText(uuid)) {
-                log.warn("用户 {} 的token中未找到用户标识", appUserId);
-                return false;
-            }
-            
-            // 从Redis中获取用户登录信息
-            String userKey = getTokenKey(uuid);
-            LoginUserApplet loginUser = redisCache.getCacheObject(userKey);
-            
-            if (loginUser == null) {
-                log.warn("用户 {} 的登录信息已过期或不存在", appUserId);
-                return false;
-            }
-            
-            // 验证用户ID是否匹配
-            if (!appUserId.equals(loginUser.getUserId())) {
-                log.warn("用户 {} 的token与提供的用户ID不匹配", appUserId);
-                return false;
-            }
-            
-            // 验证token是否过期
-            long currentTime = System.currentTimeMillis();
-            if (loginUser.getExpireTime() != null && loginUser.getExpireTime() < currentTime) {
-                log.warn("用户 {} 的token已过期", appUserId);
-                return false;
-            }
-            
-            log.debug("用户 {} 的token验证成功", appUserId);
-            return true;
-            
-        } catch (Exception e) {
-            log.error("验证用户 {} 的token时发生错误: {}", appUserId, e.getMessage(), e);
-            return false;
-        }
-    }
-    
-    /**
-     * 解析JWT token
-     * @param token JWT token
-     * @return Claims对象
-     */
-    private Claims parseToken(String token) {
-        try {
-            return Jwts.parser()
-                    .setSigningKey(secret)
-                    .parseClaimsJws(token)
-                    .getBody();
-        } catch (Exception e) {
-            log.error("解析token失败: {}", e.getMessage());
-            return null;
-        }
-    }
-    
-    /**
-     * 获取token在Redis中的key
-     * @param uuid 用户唯一标识
-     * @return Redis key
-     */
-    private String getTokenKey(String uuid) {
-        return com.ruoyi.common.constant.CacheConstants.LOGIN_TOKEN_KEY + uuid;
-    }
-
-    /**
-     * 认证结果类
-     */
-    public static class AuthResult {
-        private final boolean success;
-        private final String message;
-        private final TAppUser appUser;
-
-        private AuthResult(boolean success, String message, TAppUser appUser) {
-            this.success = success;
-            this.message = message;
-            this.appUser = appUser;
-        }
-
-        public static AuthResult success(TAppUser appUser) {
-            return new AuthResult(true, "认证成功", appUser);
-        }
-
-        public static AuthResult failure(String message) {
-            return new AuthResult(false, message, null);
-        }
-
-        public boolean isSuccess() {
-            return success;
-        }
-
-        public String getMessage() {
-            return message;
-        }
-
-        public TAppUser getAppUser() {
-            return appUser;
-        }
-    }
-
-    /**
-     * 从认证消息中提取用户信息
-     * @param messageObj 消息对象
-     * @return 用户认证信息
-     */
-    public UserAuthInfo extractAuthInfo(Map<String, Object> messageObj) {
-        String appUserId = (String) messageObj.get("appUserId");
-        String token = (String) messageObj.get("token");
-        String deviceId = (String) messageObj.get("deviceId");
-        String deviceType = (String) messageObj.get("deviceType");
-
-        return new UserAuthInfo(appUserId, token, deviceId, deviceType);
-    }
-
-    /**
-     * 用户认证信息类
-     */
-    public static class UserAuthInfo {
-        private final String appUserId;
-        private final String token;
-        private final String deviceId;
-        private final String deviceType;
-
-        public UserAuthInfo(String appUserId, String token, String deviceId, String deviceType) {
-            this.appUserId = appUserId;
-            this.token = token;
-            this.deviceId = deviceId;
-            this.deviceType = deviceType;
-        }
-
-        public String getAppUserId() {
-            return appUserId;
-        }
-
-        public String getToken() {
-            return token;
-        }
-
-        public String getDeviceId() {
-            return deviceId;
-        }
-
-        public String getDeviceType() {
-            return deviceType;
-        }
-    }
-}
+//package com.ruoyi.web.controller.webSocket;
+//
+//import com.ruoyi.common.constant.Constants;
+//import com.ruoyi.common.core.domain.model.LoginUserApplet;
+//import com.ruoyi.common.core.redis.RedisCache;
+//import io.jsonwebtoken.Claims;
+//import io.jsonwebtoken.Jwts;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.stereotype.Component;
+//import org.springframework.util.StringUtils;
+//
+//import java.util.Map;
+//
+///**
+// * WebSocket认证处理器
+// * 处理WebSocket连接的用户认证逻辑
+// */
+//@Component
+//@Slf4j
+//public class WebSocketAuthHandler {
+//
+//
+//    @Autowired
+//    private RedisCache redisCache;
+//
+//    // 令牌秘钥
+//    @Value("${token.secret}")
+//    private String secret;
+//
+//    /**
+//     * 验证用户认证信息
+//     * @param appUserId 用户ID
+//     * @param token 认证令牌(可选)
+//     * @return 认证结果
+//     */
+//    public AuthResult authenticateUser(String appUserId, String token) {
+//        try {
+//            if (appUserId == null || appUserId.trim().isEmpty()) {
+//                return AuthResult.failure("用户ID不能为空");
+//            }
+//
+//
+//            return AuthResult.success();
+//        } catch (Exception e) {
+//            log.error("用户认证失败,用户ID: {}, 错误: {}", appUserId, e.getMessage(), e);
+//            return AuthResult.failure("认证过程中发生错误: " + e.getMessage());
+//        }
+//    }
+//
+//    /**
+//     * 验证token
+//     * @param appUserId 用户ID
+//     * @param token 令牌
+//     * @return 是否有效
+//     */
+//    private boolean validateToken(String appUserId, String token) {
+//        try {
+//            if (!StringUtils.hasText(token)) {
+//                log.debug("用户 {} 未提供token,跳过token验证", appUserId);
+//                return true; // 如果没有提供token,允许通过(可以根据业务需求调整)
+//            }
+//
+//            // 移除Bearer前缀
+//            if (token.startsWith(Constants.TOKEN_PREFIX)) {
+//                token = token.replace(Constants.TOKEN_PREFIX, "");
+//            }
+//
+//            // 解析JWT token
+//            Claims claims = parseToken(token);
+//            if (claims == null) {
+//                log.warn("用户 {} 的token解析失败", appUserId);
+//                return false;
+//            }
+//
+//            // 从token中获取用户标识
+//            String uuid = (String) claims.get(Constants.LOGIN_USER_APPLET_KEY);
+//            if (!StringUtils.hasText(uuid)) {
+//                log.warn("用户 {} 的token中未找到用户标识", appUserId);
+//                return false;
+//            }
+//
+//            // 从Redis中获取用户登录信息
+//            String userKey = getTokenKey(uuid);
+//            LoginUserApplet loginUser = redisCache.getCacheObject(userKey);
+//
+//            if (loginUser == null) {
+//                log.warn("用户 {} 的登录信息已过期或不存在", appUserId);
+//                return false;
+//            }
+//
+//            // 验证用户ID是否匹配
+//            if (!appUserId.equals(loginUser.getUserId())) {
+//                log.warn("用户 {} 的token与提供的用户ID不匹配", appUserId);
+//                return false;
+//            }
+//
+//            // 验证token是否过期
+//            long currentTime = System.currentTimeMillis();
+//            if (loginUser.getExpireTime() != null && loginUser.getExpireTime() < currentTime) {
+//                log.warn("用户 {} 的token已过期", appUserId);
+//                return false;
+//            }
+//
+//            log.debug("用户 {} 的token验证成功", appUserId);
+//            return true;
+//
+//        } catch (Exception e) {
+//            log.error("验证用户 {} 的token时发生错误: {}", appUserId, e.getMessage(), e);
+//            return false;
+//        }
+//    }
+//
+//    /**
+//     * 解析JWT token
+//     * @param token JWT token
+//     * @return Claims对象
+//     */
+//    private Claims parseToken(String token) {
+//        try {
+//            return Jwts.parser()
+//                    .setSigningKey(secret)
+//                    .parseClaimsJws(token)
+//                    .getBody();
+//        } catch (Exception e) {
+//            log.error("解析token失败: {}", e.getMessage());
+//            return null;
+//        }
+//    }
+//
+//    /**
+//     * 获取token在Redis中的key
+//     * @param uuid 用户唯一标识
+//     * @return Redis key
+//     */
+//    private String getTokenKey(String uuid) {
+//        return com.ruoyi.common.constant.CacheConstants.LOGIN_TOKEN_KEY + uuid;
+//    }
+//
+//    /**
+//     * 认证结果类
+//     */
+//    public static class AuthResult {
+//        private final boolean success;
+//        private final String message;
+////        private final TAppUser appUser;
+//
+//        private AuthResult(boolean success, String message) {
+//            this.success = success;
+//            this.message = message;
+////            this.appUser = appUser;
+//        }
+//
+////        public static AuthResult success(TAppUser appUser) {
+////            return new AuthResult(true, "认证成功", appUser);
+////        }
+////
+////        public static AuthResult failure(String message) {
+////            return new AuthResult(false, message, null);
+////        }
+////
+////        public boolean isSuccess() {
+////            return success;
+////        }
+////
+////        public String getMessage() {
+////            return message;
+////        }
+////
+////        public TAppUser getAppUser() {
+////            return appUser;
+////        }
+//    }
+//
+//    /**
+//     * 从认证消息中提取用户信息
+//     * @param messageObj 消息对象
+//     * @return 用户认证信息
+//     */
+//    public UserAuthInfo extractAuthInfo(Map<String, Object> messageObj) {
+//        String appUserId = (String) messageObj.get("appUserId");
+//        String token = (String) messageObj.get("token");
+//        String deviceId = (String) messageObj.get("deviceId");
+//        String deviceType = (String) messageObj.get("deviceType");
+//
+//        return new UserAuthInfo(appUserId, token, deviceId, deviceType);
+//    }
+//
+//    /**
+//     * 用户认证信息类
+//     */
+//    public static class UserAuthInfo {
+//        private final String appUserId;
+//        private final String token;
+//        private final String deviceId;
+//        private final String deviceType;
+//
+//        public UserAuthInfo(String appUserId, String token, String deviceId, String deviceType) {
+//            this.appUserId = appUserId;
+//            this.token = token;
+//            this.deviceId = deviceId;
+//            this.deviceType = deviceType;
+//        }
+//
+//        public String getAppUserId() {
+//            return appUserId;
+//        }
+//
+//        public String getToken() {
+//            return token;
+//        }
+//
+//        public String getDeviceId() {
+//            return deviceId;
+//        }
+//
+//        public String getDeviceType() {
+//            return deviceType;
+//        }
+//    }
+//}

--
Gitblit v1.7.1