登录token有效时长变更

This commit is contained in:
liux 2025-12-01 15:04:30 +08:00
parent efbc063a2f
commit 6aca092e12
2 changed files with 42 additions and 5 deletions

View File

@ -171,7 +171,7 @@ public class TokenController {
}else{
LoginUser login = strategy.login(username, password);
logService.saveLogin(username, "登录", "登录成功", null, "成功");
return R.ok(tokenService.createKitchenStaffToken(login));
return R.ok(tokenService.createDeviceStaffToken(login));
}
}

View File

@ -122,14 +122,42 @@ public class TokenService {
rspMap.put("staffId", loginUser.getUserid());
rspMap.put("staffName", loginUser.getSysUser().getNickName());
rspMap.put("mobile", loginUser.getSysUser().getPhonenumber());
long tokenTime = getTokenTime();
System.err.println("tokenTime="+tokenTime);
//对token进行存储
redisService.setCacheObject(LOGIN_STAFF_KEY + userId, token, tokenTime, TimeUnit.MINUTES);
return rspMap;
}
public Map<String, Object> createDeviceStaffToken(LoginUser loginUser) {
// 检查并删除已有的token
//delExistingToken(loginUser.getSysUser().getUserId());
String token = IdUtils.fastUUID();
Long userId = loginUser.getSysUser().getUserId();
String userName = loginUser.getSysUser().getUserName();
loginUser.setToken(token);
loginUser.setUserid(userId);
loginUser.setUsername(userName);
loginUser.setIpaddr(IpUtils.getIpAddr());
refreshDeviceToken(loginUser);
// Jwt存储信息
Map<String, Object> claimsMap = new HashMap<String, Object>(16);
claimsMap.put(SecurityConstants.USER_KEY, token);
claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
String accessToken = JwtUtils.createToken(claimsMap);
Map<String, Object> rspMap = new HashMap<String, Object>(16);
rspMap.put("access_token", accessToken);
rspMap.put("expires_in", EXPIRETIME);
rspMap.put("isLogin", isLogin(String.valueOf(userId)));
rspMap.put("deviceTypes", loginUser.getPermissions());
rspMap.put("staffId", loginUser.getUserid());
rspMap.put("staffName", loginUser.getSysUser().getNickName());
rspMap.put("mobile", loginUser.getSysUser().getPhonenumber());
long tokenTime = getKitchenTokenTime();
System.err.println("tokenTime="+tokenTime);
//对token进行存储
redisService.setCacheObject(LOGIN_STAFF_KEY + userId, token, tokenTime, TimeUnit.MINUTES);
// 验证设置
Long actualExpire = redisService.getExpire(LOGIN_STAFF_KEY + userId);
log.info("期望过期时间: {}分钟, 实际过期时间: {}秒",
tokenTime*60, actualExpire);
return rspMap;
}
@ -237,6 +265,15 @@ public class TokenService {
String userKey = getTokenKey(loginUser.getToken());
redisService.setCacheObject(userKey, loginUser, tokenTime, TimeUnit.MINUTES);
}
public void refreshDeviceToken(LoginUser loginUser) {
long tokenTime = getKitchenTokenTime();
loginUser.setLoginTime(System.currentTimeMillis());
loginUser.setExpireTime(loginUser.getLoginTime() + tokenTime * MILLIS_MINUTE);
// 根据uuid将loginUser缓存
String userKey = getTokenKey(loginUser.getToken());
redisService.setCacheObject(userKey, loginUser, tokenTime, TimeUnit.MINUTES);
}
private String getTokenKey(String token) {
return ACCESS_TOKEN + token;