diff --git a/agri-admin/src/main/resources/application.yml b/agri-admin/src/main/resources/application.yml index 8af8bd2..1804db4 100644 --- a/agri-admin/src/main/resources/application.yml +++ b/agri-admin/src/main/resources/application.yml @@ -103,8 +103,12 @@ token: header: Authorization # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz - # 令牌有效期(默认30分钟) - expireTime: 30 + # 令牌有效期(默认30分钟)pc端默认分钟 移动端默认小时 + pc: + expireTime: 30 + mobile: + expireTime: 72 + # MyBatis Plus配置 mybatis-plus: diff --git a/agri-common/src/main/java/com/agri/common/utils/http/UserAgentUtils.java b/agri-common/src/main/java/com/agri/common/utils/http/UserAgentUtils.java index eae3b19..93d855b 100644 --- a/agri-common/src/main/java/com/agri/common/utils/http/UserAgentUtils.java +++ b/agri-common/src/main/java/com/agri/common/utils/http/UserAgentUtils.java @@ -1,11 +1,12 @@ package com.agri.common.utils.http; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import com.agri.common.utils.StringUtils; import nl.basjes.parse.useragent.UserAgent; import nl.basjes.parse.useragent.UserAgentAnalyzer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * UserAgent解析工具类 * @@ -42,6 +43,7 @@ public class UserAgentUtils .showMinimalVersion() .withField(UserAgent.AGENT_NAME_VERSION) .withField(UserAgent.OPERATING_SYSTEM_NAME_VERSION) + .withField(UserAgent.DEVICE_CLASS) // 是否为移动设备 .build(); /** @@ -251,4 +253,11 @@ public class UserAgentUtils return extractMajorVersion(version); } } + + + public static String getDeviceType(String userAgent) { + + UserAgent ua = userAgentAnalyzer.parse(userAgent); + return ua.getValue("DeviceClass"); + } } diff --git a/agri-framework/src/main/java/com/agri/framework/web/service/TokenService.java b/agri-framework/src/main/java/com/agri/framework/web/service/TokenService.java index 4bf087f..b762c03 100644 --- a/agri-framework/src/main/java/com/agri/framework/web/service/TokenService.java +++ b/agri-framework/src/main/java/com/agri/framework/web/service/TokenService.java @@ -43,8 +43,11 @@ public class TokenService private String secret; // 令牌有效期(默认30分钟) - @Value("${token.expireTime}") - private int expireTime; + @Value("${token.pc.expireTime}") + private int pc_expireTime; + + @Value("${token.mobile.expireTime}") + private int mobile_expireTime; protected static final long MILLIS_SECOND = 1000; @@ -149,6 +152,11 @@ public class TokenService public void refreshToken(LoginUser loginUser) { loginUser.setLoginTime(System.currentTimeMillis()); + String deviceType = UserAgentUtils.getDeviceType(ServletUtils.getRequest().getHeader("User-Agent")); + int expireTime = pc_expireTime; + if (StringUtils.isNotEmpty(deviceType) && deviceType.equals("Phone")) { + expireTime = mobile_expireTime * 60; + } loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); // 根据uuid将loginUser缓存 String userKey = getTokenKey(loginUser.getToken());