From be701122cab36666619e00dbe58826d5bb489266 Mon Sep 17 00:00:00 2001 From: pengjie <2413927716@qq.com> Date: Mon, 20 Jul 2026 10:43:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(IM):=20Redis=E7=AD=BE=E5=90=8Dkey=E5=8A=A0?= =?UTF-8?q?=E5=85=A5sdkAppId=EF=BC=8C=E9=98=B2=E6=AD=A2=E5=88=87=E6=8D=A2A?= =?UTF-8?q?ppID=E5=90=8E=E7=AD=BE=E5=90=8D=E4=B8=8D=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - key格式: silence:im_user_sig:{sdkAppId}:{identifier} - 切换IMConfig.sdkAppId后自动缓存miss,重新生成正确签名 - 旧key作为孤儿数据24小时后自然过期 --- .../com/renkang/im/util/TencentCloudImUtil.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/health-im/health-im-biz/src/main/java/com/renkang/im/util/TencentCloudImUtil.java b/health-im/health-im-biz/src/main/java/com/renkang/im/util/TencentCloudImUtil.java index d79f5ca..443749d 100644 --- a/health-im/health-im-biz/src/main/java/com/renkang/im/util/TencentCloudImUtil.java +++ b/health-im/health-im-biz/src/main/java/com/renkang/im/util/TencentCloudImUtil.java @@ -48,7 +48,7 @@ public class TencentCloudImUtil { @Value("${IMConfig.requestUrl}") private String HTTPS_URL_PREFIX; private static final String APP_MANAGER = "administrator"; - private static final String REDIS_IM_USER_SIG = "silence:im_user_sig:"; + private static final String REDIS_IM_USER_SIG_PREFIX = "silence:im_user_sig:"; @Value("${IMConfig.sdkAppId}") private long sdkAppId; @@ -73,23 +73,29 @@ public class TencentCloudImUtil { return System.currentTimeMillis() + "" + StrUtil.subSuf(Math.random() + "", 2); } + private String buildUserSigKey(String identifier) { + return REDIS_IM_USER_SIG_PREFIX + sdkAppId + ":" + identifier; + } + /** * 获取腾讯云用户签名 */ public String getTxCloudUserSig() { - String userSig = (String) redisServiceUtil.get(REDIS_IM_USER_SIG + APP_MANAGER); + String key = buildUserSigKey(APP_MANAGER); + String userSig = (String) redisServiceUtil.get(key); if (StringUtils.isEmpty(userSig)) { userSig = tximUtil.genUserSig(APP_MANAGER); - redisServiceUtil.set(REDIS_IM_USER_SIG + APP_MANAGER, userSig, 86400L); + redisServiceUtil.set(key, userSig, 86400L); } return userSig; } public String userSigAndroid(String userId) { - String userSig = (String) redisServiceUtil.get(REDIS_IM_USER_SIG + userId); + String key = buildUserSigKey(userId); + String userSig = (String) redisServiceUtil.get(key); if (StringUtils.isEmpty(userSig)) { userSig = tximUtil.genUserSig(userId); - redisServiceUtil.set(REDIS_IM_USER_SIG + userId, userSig, 86400L); + redisServiceUtil.set(key, userSig, 86400L); } return userSig; }