diff --git a/pom.xml b/pom.xml
index b4d6fe419..f5672e2e0 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
@@ -57,9 +57,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());
}
/**