Преглед изворни кода

操作日志优化获取操作地址,token令牌添加操作系统、浏览器类型字段并优化在线用户接口

zhaojinyu пре 4 дана
родитељ
комит
7918e6d9b8

+ 7 - 0
base-modules/service-system/service-system-api/src/main/java/com/usky/system/domain/SysOperLogVO.java

@@ -47,6 +47,9 @@ public class SysOperLogVO extends BaseEntity
     /** 操作地址 */
     private String operIp;
 
+    /** 操作地点 */
+    private String operLocation;
+
     /** 请求参数 */
     private String operParam;
 
@@ -195,6 +198,10 @@ public class SysOperLogVO extends BaseEntity
         this.operIp = operIp;
     }
 
+    public String getOperLocation() { return operLocation; }
+
+    public void setOperLocation(String operLocation) { this.operLocation = operLocation; }
+
     public String getOperParam()
     {
         return operParam;

+ 0 - 6
base-modules/service-system/service-system-biz/pom.xml

@@ -59,12 +59,6 @@
             <artifactId>hutool-all</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.json</groupId>
-            <artifactId>json</artifactId>
-            <version>20210307</version>
-        </dependency>
-
         <!-- 监控服务器资源状态 -->
         <dependency>
             <groupId>com.github.oshi</groupId>

+ 2 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysUserOnlineServiceImpl.java

@@ -90,6 +90,8 @@ public class SysUserOnlineServiceImpl implements ISysUserOnlineService
         sysUserOnline.setIpaddr(user.getIpaddr());
         sysUserOnline.setLoginTime(user.getLoginTime());
         sysUserOnline.setExpireTime(user.getExpireTime());
+        sysUserOnline.setOs(user.getOs());
+        sysUserOnline.setBrowser(user.getBrowser());
         return sysUserOnline;
     }
 }

+ 1 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/util/AsyncFactory.java

@@ -8,6 +8,7 @@ import com.ruoyi.common.core.utils.ServletUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.ip.IpUtils;
 import com.usky.common.core.util.SpringContextUtils;
+import com.usky.common.log.aspect.AddressUtils;
 import com.usky.system.domain.MceRequestVO;
 import com.usky.system.domain.SysLogininfor;
 import com.usky.system.domain.SysUser;

+ 4 - 0
usky-common/usky-common-core/src/main/java/com/usky/common/core/constants/SecurityConstants.java

@@ -43,4 +43,8 @@ public class SecurityConstants
     public static final String LOGIN_USER = "login_user";
 
     public static final String DETAILS_TENANT_ID = "";
+
+    public static final String DETAILS_OS =  "osInfo";
+
+    public static final String DETAILS_BROWSER = "browserInfo";
 }

+ 9 - 0
usky-common/usky-common-log/pom.xml

@@ -24,6 +24,15 @@
             <groupId>com.usky</groupId>
             <artifactId>usky-common-security</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>ruoyi-common-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+            <version>20210307</version>
+        </dependency>
 
     </dependencies>
 </project>

+ 3 - 5
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/util/AddressUtils.java → usky-common/usky-common-log/src/main/java/com/usky/common/log/aspect/AddressUtils.java

@@ -1,14 +1,12 @@
-package com.usky.system.service.util;
+package com.usky.common.log.aspect;
 
 import cn.hutool.http.HttpUtil;
-import com.alibaba.nacos.shaded.com.google.common.base.Strings;
 import com.ruoyi.common.core.utils.ip.IpUtils;
-import com.usky.system.domain.WjConfig;
+import com.usky.common.log.service.WjConfig;
 import org.json.JSONException;
+import org.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.util.StringUtils;
-import org.json.JSONObject;
 
 
 /*

+ 3 - 0
usky-common/usky-common-log/src/main/java/com/usky/common/log/aspect/LogAspect.java

@@ -103,6 +103,9 @@ public class LogAspect {
             operLog.setConsumingTime(consumingTime); // 存储耗时
             operLog.setConsumingTimeWithUnit(consumingTimeWithUnit); // 存储带有单位的字符串
 
+            String operLocation = AddressUtils.getRealAddressByIP(ip);
+            operLog.setOperLocation(operLocation);
+
             // 保存数据库
             asyncLogService.saveSysLog(operLog);
         } catch (Exception exp) {

+ 1 - 1
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/domain/WjConfig.java → usky-common/usky-common-log/src/main/java/com/usky/common/log/service/WjConfig.java

@@ -1,4 +1,4 @@
-package com.usky.system.domain;
+package com.usky.common.log.service;
 
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;

+ 6 - 0
usky-common/usky-common-security/pom.xml

@@ -36,6 +36,12 @@
             <groupId>com.usky</groupId>
             <artifactId>usky-common-redis</artifactId>
         </dependency>
+        <dependency>
+            <groupId>eu.bitwalker</groupId>
+            <artifactId>UserAgentUtils</artifactId>
+            <version>1.21</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 

+ 11 - 0
usky-common/usky-common-security/src/main/java/com/usky/common/security/service/TokenService.java

@@ -6,6 +6,7 @@ import com.usky.common.core.util.*;
 import com.usky.common.redis.core.RedisHelper;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.system.model.LoginUser;
+import eu.bitwalker.useragentutils.UserAgent;
 import org.springframework.cloud.commons.util.IdUtils;
 import org.springframework.stereotype.Component;
 
@@ -50,6 +51,14 @@ public class TokenService {
         loginUser.setUserid(userId);
         loginUser.setUsername(userName);
         loginUser.setIpaddr(IpUtils.getIpAddr(ServletUtils.getRequest()));
+        // 获取操作系统信息
+        String userAgentString = ServletUtils.getRequest().getHeader("User-Agent");
+        UserAgent userAgent = UserAgent.parseUserAgentString(userAgentString);
+        String osInfo = userAgent.getOperatingSystem().getName();
+        String browserInfo = userAgent.getBrowser().getName();
+        loginUser.setOs(osInfo);
+        loginUser.setBrowser(browserInfo);
+
         refreshToken(loginUser);
 
         // Jwt存储信息
@@ -58,6 +67,8 @@ public class TokenService {
         claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
         claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
         claimsMap.put(SecurityConstants.DETAILS_TENANT_ID, tenantId);
+        claimsMap.put(SecurityConstants.DETAILS_OS, osInfo);
+        claimsMap.put(SecurityConstants.DETAILS_BROWSER, browserInfo);
 
         // 接口返回信息
         Map<String, Object> rspMap = new HashMap<String, Object>();