From f6fa8c4c3da5a6e47f6c0d2dc522100325aeadc9 Mon Sep 17 00:00:00 2001 From: guxin0123 Date: Wed, 12 Jan 2022 12:08:27 +0800 Subject: [PATCH] =?UTF-8?q?eu.bitwalker.UserAgentUtils=20=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E4=B8=BA=20com.blueconic.browscap-java=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0UserAgentUtils=E5=B7=A5=E5=85=B7=E7=B1=BB=E7=AE=80?= =?UTF-8?q?=E5=8C=96=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++-- ruoyi-common/pom.xml | 4 +- .../ruoyi/common/utils/UserAgentUtils.java | 42 +++++++++++++++++++ .../manager/factory/AsyncFactory.java | 9 ++-- .../framework/web/service/TokenService.java | 8 ++-- 5 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/UserAgentUtils.java diff --git a/pom.xml b/pom.xml index c024d33d7..a239a1046 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ 1.8 3.1.1 1.2.8 - 1.21 + 1.3.11 3.0.0 2.3.2 2.2.0 @@ -58,9 +58,9 @@ - eu.bitwalker - UserAgentUtils - ${bitwalker.version} + com.blueconic + browscap-java + ${browscap.version} diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index e18104ca1..9782ffe1e 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -115,8 +115,8 @@ - eu.bitwalker - UserAgentUtils + com.blueconic + browscap-java diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/UserAgentUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/UserAgentUtils.java new file mode 100644 index 000000000..51478594c --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/UserAgentUtils.java @@ -0,0 +1,42 @@ +package com.ruoyi.common.utils; + +import com.blueconic.browscap.Capabilities; +import com.blueconic.browscap.ParseException; +import com.blueconic.browscap.UserAgentParser; +import com.blueconic.browscap.UserAgentService; + +import java.io.IOException; + +/** + * 浏览器UserAgent工具类 + * + * @author Gux + */ +public class UserAgentUtils { + + UserAgentParser parser; + String browser = ""; + String platform = ""; + + public static UserAgentUtils parseUserAgentString(String userAgentString) { + UserAgentUtils userAgentUtils = new UserAgentUtils(); + try { + userAgentUtils.parser = new UserAgentService().loadParser(); + final Capabilities capabilities = userAgentUtils.parser.parse(userAgentString); + userAgentUtils.browser = capabilities.getBrowser() + " " + capabilities.getBrowserMajorVersion(); + userAgentUtils.platform = capabilities.getPlatform(); + } catch (IOException | ParseException e) { + e.printStackTrace(); + } + return userAgentUtils; + } + + public String getBrowser() { + return browser; + } + + public String getOperatingSystem() { + return platform; + } + +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java index f9c4fcca5..25c07c1a6 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java @@ -1,6 +1,8 @@ package com.ruoyi.framework.manager.factory; import java.util.TimerTask; + +import com.ruoyi.common.utils.UserAgentUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ruoyi.common.constant.Constants; @@ -14,7 +16,6 @@ import com.ruoyi.system.domain.SysLogininfor; import com.ruoyi.system.domain.SysOperLog; import com.ruoyi.system.service.ISysLogininforService; import com.ruoyi.system.service.ISysOperLogService; -import eu.bitwalker.useragentutils.UserAgent; /** * 异步工厂(产生任务用) @@ -37,7 +38,7 @@ public class AsyncFactory public static TimerTask recordLogininfor(final String username, final String status, final String message, final Object... args) { - final UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); + final UserAgentUtils userAgent = UserAgentUtils.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); final String ip = IpUtils.getIpAddr(ServletUtils.getRequest()); return new TimerTask() { @@ -54,9 +55,9 @@ public class AsyncFactory // 打印信息到日志 sys_user_logger.info(s.toString(), args); // 获取客户端操作系统 - String os = userAgent.getOperatingSystem().getName(); + String os = userAgent.getOperatingSystem(); // 获取客户端浏览器 - String browser = userAgent.getBrowser().getName(); + String browser = userAgent.getBrowser(); // 封装对象 SysLogininfor logininfor = new SysLogininfor(); logininfor.setUserName(username); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java index 5b4c41466..16824b55e 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; +import com.ruoyi.common.utils.UserAgentUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -15,7 +16,6 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.common.utils.uuid.IdUtils; -import eu.bitwalker.useragentutils.UserAgent; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; @@ -154,12 +154,12 @@ public class TokenService */ public void setUserAgent(LoginUser loginUser) { - UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); + UserAgentUtils userAgent = UserAgentUtils.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); String ip = IpUtils.getIpAddr(ServletUtils.getRequest()); loginUser.setIpaddr(ip); loginUser.setLoginLocation(AddressUtils.getRealAddressByIP(ip)); - loginUser.setBrowser(userAgent.getBrowser().getName()); - loginUser.setOs(userAgent.getOperatingSystem().getName()); + loginUser.setBrowser(userAgent.getBrowser()); + loginUser.setOs(userAgent.getOperatingSystem()); } /**