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;