From c1b0e176e54acad97de5cd3ce0e74740bb26ff76 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期五, 26 十一月 2021 13:42:52 +0800 Subject: [PATCH] update 在线用户管理 改为使用 satoken 工具实现 消除差异化 --- ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java | 14 ++++++++------ ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java | 9 ++++++++- ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java | 7 ++++--- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java index 4f10608..529d5e7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java @@ -22,7 +22,6 @@ import org.springframework.web.bind.annotation.*; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -42,10 +41,12 @@ @SaCheckPermission("monitor:online:list") @GetMapping("/list") public TableDataInfo<SysUserOnline> list(String ipaddr, String userName) { - Collection<String> keys = RedisUtils.keys(Constants.ONLINE_TOKEN_KEY + "*"); + // 鑾峰彇鎵�鏈夋湭杩囨湡鐨� token + List<String> keys = StpUtil.searchTokenValue("", -1, 0); List<UserOnlineDTO> userOnlineDTOList = new ArrayList<>(); for (String key : keys) { - userOnlineDTOList.add(RedisUtils.getCacheObject(key)); + String onlineKey = key.replace(Constants.LOGIN_TOKEN_KEY, Constants.ONLINE_TOKEN_KEY); + userOnlineDTOList.add(RedisUtils.getCacheObject(onlineKey)); } if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) { userOnlineDTOList = userOnlineDTOList.stream().filter(userOnline -> diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java index be27280..1d2f295 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java @@ -9,6 +9,7 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.config.properties.SecurityProperties; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -20,6 +21,7 @@ * * @author Lion Li */ +@Slf4j @Configuration public class SaTokenConfig implements WebMvcConfigurer { @@ -40,12 +42,12 @@ // 鎺掗櫎涓嬩笉闇�瑕佹嫤鎴殑 .notMatch(securityProperties.getExcludes()) .check(() -> { - Long userId = SecurityUtils.getUserId(); - if (StringUtils.isNotNull(userId)) { - long tokenTimeout = StpUtil.getTokenTimeout(); - long tokenActivityTimeout = StpUtil.getTokenActivityTimeout(); - System.out.println("鍓╀綑鏈夋晥鏃堕棿: " + tokenTimeout); - System.out.println("涓存椂鏈夋晥鏃堕棿: " + tokenActivityTimeout); + if (log.isDebugEnabled()) { + Long userId = SecurityUtils.getUserId(); + if (StringUtils.isNotNull(userId)) { + log.debug("鍓╀綑鏈夋晥鏃堕棿: {}", StpUtil.getTokenTimeout()); + log.debug("涓存椂鏈夋晥鏃堕棿: {}", StpUtil.getTokenActivityTimeout()); + } } }); })).addPathPatterns("/**"); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java index f407774..5130da9 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java @@ -1,5 +1,6 @@ package com.ruoyi.framework.listener; +import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.listener.SaTokenListener; import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; @@ -12,7 +13,10 @@ import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.ip.AddressUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; /** * 鐢ㄦ埛琛屼负 渚﹀惉鍣ㄧ殑瀹炵幇 @@ -20,6 +24,9 @@ @Component @Slf4j public class UserActionListener implements SaTokenListener { + + @Autowired + private SaTokenConfig saTokenConfig; /** * 姣忔鐧诲綍鏃惰Е鍙� @@ -43,7 +50,7 @@ if (StringUtils.isNotNull(user.getDept())) { userOnlineDTO.setDeptName(user.getDept().getDeptName()); } - RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, userOnlineDTO); + RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, userOnlineDTO, saTokenConfig.getTimeout(), TimeUnit.SECONDS); log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue); } else if (userType == UserType.APP_USER) { // app绔� 鑷鏍规嵁涓氬姟缂栧啓 -- Gitblit v1.9.3