pc端过期时间改为30分钟。移动端过期时间改为72小时

feasure
xce 2026-01-08 19:14:31 +08:00
parent 135e569ea5
commit 6ae444c3c9
3 changed files with 27 additions and 6 deletions

View File

@ -103,8 +103,12 @@ token:
header: Authorization header: Authorization
# 令牌密钥 # 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期默认30分钟 # 令牌有效期默认30分钟pc端默认分钟 移动端默认小时
pc:
expireTime: 30 expireTime: 30
mobile:
expireTime: 72
# MyBatis Plus配置 # MyBatis Plus配置
mybatis-plus: mybatis-plus:

View File

@ -1,11 +1,12 @@
package com.agri.common.utils.http; package com.agri.common.utils.http;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.agri.common.utils.StringUtils; import com.agri.common.utils.StringUtils;
import nl.basjes.parse.useragent.UserAgent; import nl.basjes.parse.useragent.UserAgent;
import nl.basjes.parse.useragent.UserAgentAnalyzer; import nl.basjes.parse.useragent.UserAgentAnalyzer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* UserAgent * UserAgent
* *
@ -42,6 +43,7 @@ public class UserAgentUtils
.showMinimalVersion() .showMinimalVersion()
.withField(UserAgent.AGENT_NAME_VERSION) .withField(UserAgent.AGENT_NAME_VERSION)
.withField(UserAgent.OPERATING_SYSTEM_NAME_VERSION) .withField(UserAgent.OPERATING_SYSTEM_NAME_VERSION)
.withField(UserAgent.DEVICE_CLASS) // 是否为移动设备
.build(); .build();
/** /**
@ -251,4 +253,11 @@ public class UserAgentUtils
return extractMajorVersion(version); return extractMajorVersion(version);
} }
} }
public static String getDeviceType(String userAgent) {
UserAgent ua = userAgentAnalyzer.parse(userAgent);
return ua.getValue("DeviceClass");
}
} }

View File

@ -43,8 +43,11 @@ public class TokenService
private String secret; private String secret;
// 令牌有效期默认30分钟 // 令牌有效期默认30分钟
@Value("${token.expireTime}") @Value("${token.pc.expireTime}")
private int expireTime; private int pc_expireTime;
@Value("${token.mobile.expireTime}")
private int mobile_expireTime;
protected static final long MILLIS_SECOND = 1000; protected static final long MILLIS_SECOND = 1000;
@ -149,6 +152,11 @@ public class TokenService
public void refreshToken(LoginUser loginUser) public void refreshToken(LoginUser loginUser)
{ {
loginUser.setLoginTime(System.currentTimeMillis()); 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); loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
// 根据uuid将loginUser缓存 // 根据uuid将loginUser缓存
String userKey = getTokenKey(loginUser.getToken()); String userKey = getTokenKey(loginUser.getToken());