mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-20 02:08:15 +08:00
update 优化获取token工具类逻辑
This commit is contained in:
parent
6d432b46d8
commit
cc6c1f7dc4
@ -18,7 +18,7 @@ import org.dromara.common.core.domain.model.SocialLoginBody;
|
||||
import org.dromara.common.core.utils.*;
|
||||
import org.dromara.common.encrypt.annotation.ApiEncrypt;
|
||||
import org.dromara.common.json.utils.JsonUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.satoken.utils.TokenUtils;
|
||||
import org.dromara.common.social.config.properties.SocialLoginConfigProperties;
|
||||
import org.dromara.common.social.config.properties.SocialProperties;
|
||||
import org.dromara.common.social.utils.SocialUtils;
|
||||
@ -95,7 +95,7 @@ public class AuthController {
|
||||
// 登录
|
||||
LoginVo loginVo = IAuthStrategy.login(body, client, grantType);
|
||||
|
||||
String tokenId = LoginHelper.getTokenId();
|
||||
String tokenId = TokenUtils.getTokenId();
|
||||
scheduledExecutorService.schedule(() -> {
|
||||
WebSocketMessageDto dto = new WebSocketMessageDto();
|
||||
dto.setMessage("欢迎登录RuoYi-Vue-Plus后台管理系统");
|
||||
|
||||
@ -3,7 +3,6 @@ package org.dromara.common.satoken.utils;
|
||||
import cn.dev33.satoken.session.SaSession;
|
||||
import cn.dev33.satoken.stp.SaLoginModel;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import lombok.AccessLevel;
|
||||
@ -11,13 +10,9 @@ import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.core.constant.TenantConstants;
|
||||
import org.dromara.common.core.constant.UserConstants;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.enums.DeviceType;
|
||||
import org.dromara.common.core.enums.UserType;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 登录鉴权助手
|
||||
@ -41,7 +36,6 @@ public class LoginHelper {
|
||||
public static final String DEPT_KEY = "deptId";
|
||||
public static final String DEPT_NAME_KEY = "deptName";
|
||||
public static final String CLIENT_KEY = "clientid";
|
||||
public static final String SYS_USER = "sys_user:";
|
||||
|
||||
/**
|
||||
* 登录系统 基于 设备类型
|
||||
@ -75,54 +69,6 @@ public class LoginHelper {
|
||||
return (LoginUser) session.get(LOGIN_USER_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录用户的token
|
||||
*/
|
||||
public static String getTokenId() {
|
||||
return StpUtil.getTokenInfo().getTokenValue() ;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenIds() {
|
||||
return StpUtil.getTokenValueListByLoginId(SYS_USER + getUserId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户 指定设备类型端的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenIds(DeviceType device) {
|
||||
return StpUtil.getTokenValueListByLoginId(SYS_USER + getUserId(), device.getDevice());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定账号 userId 的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenIds(Long userId) {
|
||||
return StpUtil.getTokenValueListByLoginId(SYS_USER + userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定账号 userIds 的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenUserIds(Set<Long> userIds) {
|
||||
if (CollUtil.isNotEmpty(userIds)) {
|
||||
return userIds.stream()
|
||||
.flatMap(userId -> StpUtil.getTokenValueListByLoginId(SYS_USER + userId).stream())
|
||||
.collect(Collectors.toList());
|
||||
} else {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定账号 userId 指定设备类型端的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenIds(Long userId, DeviceType device) {
|
||||
return StpUtil.getTokenValueListByLoginId(SYS_USER + userId, device.getDevice());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户基于token
|
||||
*/
|
||||
|
||||
@ -0,0 +1,88 @@
|
||||
package org.dromara.common.satoken.utils;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.core.enums.DeviceType;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* token工具类
|
||||
*
|
||||
* @author 21001
|
||||
*/
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class TokenUtils {
|
||||
|
||||
/**
|
||||
* 会话id(loginId)前缀
|
||||
*/
|
||||
public static final String SYS_USER = "sys_user:";
|
||||
|
||||
/**
|
||||
* 获取当前登录用户的token
|
||||
*/
|
||||
public static String getTokenId() {
|
||||
return StpUtil.getTokenInfo().getTokenValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenIds() {
|
||||
return StpUtil.getTokenValueListByLoginId(SYS_USER + LoginHelper.getUserId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户 指定设备类型端的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenIds(DeviceType device) {
|
||||
return StpUtil.getTokenValueListByLoginId(SYS_USER + LoginHelper.getUserId(), device.getDevice());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定账号 userId 的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenIds(Long userId) {
|
||||
return StpUtil.getTokenValueListByLoginId(SYS_USER + userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取账号 userId 指定设备类型端的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenIds(Long userId, DeviceType device) {
|
||||
return StpUtil.getTokenValueListByLoginId(SYS_USER + userId, device.getDevice());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定账号 userIds 的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenUserIds(Set<Long> userIds) {
|
||||
if (CollUtil.isEmpty(userIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return userIds.stream()
|
||||
.flatMap(userId -> StpUtil.getTokenValueListByLoginId(SYS_USER + userId)
|
||||
.stream())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取账号 userIds 指定设备类型端的 token 集合
|
||||
*/
|
||||
public static List<String> getTokenUserIds(Set<Long> userIds, DeviceType device) {
|
||||
if (CollUtil.isEmpty(userIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return userIds.stream()
|
||||
.flatMap(userId -> StpUtil.getTokenValueListByLoginId(SYS_USER + userId, device.getDevice())
|
||||
.stream())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
@ -2,7 +2,7 @@ package org.dromara.common.websocket.handler;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.satoken.utils.TokenUtils;
|
||||
import org.dromara.common.websocket.dto.WebSocketMessageDto;
|
||||
import org.dromara.common.websocket.holder.WebSocketSessionHolder;
|
||||
import org.dromara.common.websocket.utils.WebSocketUtils;
|
||||
@ -43,7 +43,7 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler {
|
||||
@Override
|
||||
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
|
||||
LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY);
|
||||
List<String> tokenIds = LoginHelper.getTokenIds(loginUser.getUserId());
|
||||
List<String> tokenIds = TokenUtils.getTokenIds(loginUser.getUserId());
|
||||
WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto();
|
||||
webSocketMessageDto.setSessionKeys(tokenIds);
|
||||
webSocketMessageDto.setMessage(message.getPayload());
|
||||
|
||||
@ -3,6 +3,7 @@ package org.dromara.common.websocket.interceptor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.satoken.utils.TokenUtils;
|
||||
import org.springframework.http.server.ServerHttpRequest;
|
||||
import org.springframework.http.server.ServerHttpResponse;
|
||||
import org.springframework.web.socket.WebSocketHandler;
|
||||
@ -33,7 +34,7 @@ public class PlusWebSocketInterceptor implements HandshakeInterceptor {
|
||||
@Override
|
||||
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
String tokenId = LoginHelper.getTokenId();
|
||||
String tokenId = TokenUtils.getTokenId();
|
||||
attributes.put(LOGIN_USER_KEY, loginUser);
|
||||
attributes.put(TOKEN_ID_KEY, tokenId);
|
||||
return true;
|
||||
|
||||
@ -12,7 +12,7 @@ import org.dromara.common.core.utils.StreamUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.reflect.ReflectUtils;
|
||||
import org.dromara.common.mail.utils.MailUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.satoken.utils.TokenUtils;
|
||||
import org.dromara.common.tenant.helper.TenantHelper;
|
||||
import org.dromara.common.websocket.dto.WebSocketMessageDto;
|
||||
import org.dromara.common.websocket.utils.WebSocketUtils;
|
||||
@ -24,10 +24,13 @@ import org.dromara.workflow.common.enums.MessageTypeEnum;
|
||||
import org.dromara.workflow.common.enums.TaskStatusEnum;
|
||||
import org.dromara.workflow.domain.ActHiProcinst;
|
||||
import org.dromara.workflow.domain.ActHiTaskinst;
|
||||
import org.dromara.workflow.domain.vo.*;
|
||||
import org.dromara.workflow.domain.vo.MultiInstanceVo;
|
||||
import org.dromara.workflow.domain.vo.ParticipantVo;
|
||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||
import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd;
|
||||
import org.dromara.workflow.mapper.ActHiTaskinstMapper;
|
||||
import org.dromara.workflow.service.*;
|
||||
import org.dromara.workflow.service.IActHiProcinstService;
|
||||
import org.dromara.workflow.service.IWorkflowUserService;
|
||||
import org.flowable.bpmn.model.BpmnModel;
|
||||
import org.flowable.bpmn.model.FlowNode;
|
||||
import org.flowable.common.engine.api.delegate.Expression;
|
||||
@ -42,7 +45,7 @@ import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static org.dromara.workflow.common.constant.FlowConstant.*;
|
||||
import static org.dromara.workflow.common.constant.FlowConstant.PROCESS_INSTANCE_VO;
|
||||
|
||||
/**
|
||||
* 工作流工具
|
||||
@ -325,7 +328,7 @@ public class WorkflowUtils {
|
||||
switch (messageTypeEnum) {
|
||||
case SYSTEM_MESSAGE:
|
||||
WebSocketMessageDto dto = new WebSocketMessageDto();
|
||||
dto.setSessionKeys(LoginHelper.getTokenUserIds(userIds));
|
||||
dto.setSessionKeys(TokenUtils.getTokenUserIds(userIds));
|
||||
dto.setMessage(message);
|
||||
WebSocketUtils.publishMessage(dto);
|
||||
break;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user