refactor: 使用 Token 作为 WebSocket Session Key

This commit is contained in:
2024-06-15 11:40:15 +08:00
parent e30e32aa94
commit e6dbe1a06d
2 changed files with 10 additions and 4 deletions

View File

@@ -16,7 +16,6 @@
package top.continew.admin.common.config.websocket;
import cn.hutool.core.convert.Convert;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.stereotype.Component;
@@ -40,7 +39,7 @@ public class CurrentUserProviderImpl implements CurrentUserProvider {
String token = servletRequest.getParameter("token");
LoginUser loginUser = LoginHelper.getLoginUser(token);
CurrentUser currentUser = new CurrentUser();
currentUser.setUserId(Convert.toStr(loginUser.getId()));
currentUser.setUserId(loginUser.getToken());
return currentUser;
}
}

View File

@@ -16,11 +16,15 @@
package top.continew.admin.auth.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.util.*;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.extra.servlet.JakartaServletUtil;
import cn.hutool.json.JSONUtil;
import jakarta.servlet.http.HttpServletRequest;
@@ -255,6 +259,9 @@ public class LoginServiceImpl implements LoginService {
req.setContent(socialRegister.getContent().formatted(user.getNickname()));
req.setType(MessageTypeEnum.SECURITY);
messageService.add(req, CollUtil.toList(user.getId()));
WebSocketUtils.sendMessage(user.getId().toString(), "1");
List<String> tokenList = StpUtil.getTokenValueListByLoginId(user.getId());
for (String token : tokenList) {
WebSocketUtils.sendMessage(token, "1");
}
}
}