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

View File

@@ -16,11 +16,15 @@
package top.continew.admin.auth.service.impl; package top.continew.admin.auth.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig; 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.extra.servlet.JakartaServletUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@@ -255,6 +259,9 @@ public class LoginServiceImpl implements LoginService {
req.setContent(socialRegister.getContent().formatted(user.getNickname())); req.setContent(socialRegister.getContent().formatted(user.getNickname()));
req.setType(MessageTypeEnum.SECURITY); req.setType(MessageTypeEnum.SECURITY);
messageService.add(req, CollUtil.toList(user.getId())); 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");
}
} }
} }