From 6aca092e12e8cf3b9fa3b1894095c3621e5437e5 Mon Sep 17 00:00:00 2001 From: liux <963924687@qq.com> Date: Mon, 1 Dec 2025 15:04:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95token=E6=9C=89=E6=95=88?= =?UTF-8?q?=E6=97=B6=E9=95=BF=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/TokenController.java | 2 +- .../common/security/service/TokenService.java | 45 +++++++++++++++++-- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/bonus-auth/src/main/java/com/bonus/auth/controller/TokenController.java b/bonus-auth/src/main/java/com/bonus/auth/controller/TokenController.java index 99c635f..2a40c3c 100644 --- a/bonus-auth/src/main/java/com/bonus/auth/controller/TokenController.java +++ b/bonus-auth/src/main/java/com/bonus/auth/controller/TokenController.java @@ -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)); } } diff --git a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/TokenService.java b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/TokenService.java index ae5d09f..9855e4b 100644 --- a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/TokenService.java +++ b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/TokenService.java @@ -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 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 claimsMap = new HashMap(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 rspMap = new HashMap(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;