From 1ae369855ba448bc2562ebbbe59a89e42b8c53b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Tue, 19 Oct 2021 17:23:14 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=A4=9A?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E4=BD=93=E7=B3=BB=E7=94=A8=E6=88=B7=E8=A1=8C?= =?UTF-8?q?=E4=B8=BA=E7=9B=91=E5=90=AC=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserActionListener.java} | 49 ++++++++++--------- .../system/service/impl/SaInterfaceImpl.java | 1 - 2 files changed, 26 insertions(+), 24 deletions(-) rename ruoyi-framework/src/main/java/com/ruoyi/framework/{satoken/MySaTokenListener.java => listener/UserActionListener.java} (59%) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/MySaTokenListener.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java similarity index 59% rename from ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/MySaTokenListener.java rename to ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java index cdb17bde8..f40777443 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/MySaTokenListener.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java @@ -1,4 +1,4 @@ -package com.ruoyi.framework.satoken; +package com.ruoyi.framework.listener; import cn.dev33.satoken.listener.SaTokenListener; import cn.dev33.satoken.stp.SaLoginModel; @@ -8,43 +8,46 @@ import cn.hutool.http.useragent.UserAgentUtil; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.dto.UserOnlineDTO; import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.utils.RedisUtils; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.common.utils.ServletUtils; -import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.enums.UserType; +import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.ip.AddressUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; /** - * 自定义侦听器的实现 + * 用户行为 侦听器的实现 */ @Component @Slf4j -public class MySaTokenListener implements SaTokenListener { +public class UserActionListener implements SaTokenListener { /** * 每次登录时触发 */ @Override public void doLogin(String loginType, Object loginId, SaLoginModel loginModel) { - UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent")); - String ip = ServletUtils.getClientIP(); - SysUser user = SecurityUtils.getUser(); - String tokenValue = StpUtil.getTokenValue(); - UserOnlineDTO userOnlineDTO = new UserOnlineDTO() - .setIpaddr(ip) - .setLoginLocation(AddressUtils.getRealAddressByIP(ip)) - .setBrowser(userAgent.getBrowser().getName()) - .setOs(userAgent.getOs().getName()) - .setLoginTime(System.currentTimeMillis()) - .setTokenId(tokenValue) - .setUserName(user.getUserName()); - if (StringUtils.isNotNull(user.getDept())) { - userOnlineDTO.setDeptName(user.getDept().getDeptName()); + UserType userType = LoginUtils.getUserType(loginId); + if (userType == UserType.SYS_USER) { + UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent")); + String ip = ServletUtils.getClientIP(); + SysUser user = SecurityUtils.getUser(); + String tokenValue = StpUtil.getTokenValue(); + UserOnlineDTO userOnlineDTO = new UserOnlineDTO() + .setIpaddr(ip) + .setLoginLocation(AddressUtils.getRealAddressByIP(ip)) + .setBrowser(userAgent.getBrowser().getName()) + .setOs(userAgent.getOs().getName()) + .setLoginTime(System.currentTimeMillis()) + .setTokenId(tokenValue) + .setUserName(user.getUserName()); + if (StringUtils.isNotNull(user.getDept())) { + userOnlineDTO.setDeptName(user.getDept().getDeptName()); + } + RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, userOnlineDTO); + log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue); + } else if (userType == UserType.APP_USER) { + // app端 自行根据业务编写 } - RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, userOnlineDTO); - log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue); } /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java index 11a1974ba..5dc66f292 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java @@ -28,7 +28,6 @@ public class SaInterfaceImpl implements StpInterface { Long userId = LoginUtils.getUserId(); SysUser user = iSysUserService.getById(userId); Set menuPermission = sysPermissionService.getMenuPermission(user); - //采用的是用户里自带的权限,实现一次性访问reids,进行判断是否可以访问 return new ArrayList<>(menuPermission); } else if (userType == UserType.APP_USER) { // app端权限返回 自行根据业务编写