Просмотр исходного кода

feat: 微信token有效期调整;

hanchaolong 11 часов назад
Родитель
Сommit
d56126ae7e

+ 2 - 2
jd-logistics-auth/src/main/java/com/ruoyi/auth/controller/WxMiniController.java

@@ -34,7 +34,7 @@ public class WxMiniController {
         // 用户登录
         LoginUser userInfo = sysLoginService.openIdLogin(form.getJsCode(), form.getCode());
         // 获取登录token
-        return R.ok(tokenService.createToken(userInfo));
+        return R.ok(tokenService.createTokenWechat(userInfo));
     }
 
     /**
@@ -48,6 +48,6 @@ public class WxMiniController {
         // 用户登录
         LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
         // 获取登录token
-        return R.ok(tokenService.createToken(userInfo));
+        return R.ok(tokenService.createTokenWechat(userInfo));
     }
 }

+ 42 - 0
jd-logistics-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java

@@ -171,4 +171,46 @@ public class TokenService
     {
         return ACCESS_TOKEN + token;
     }
+
+
+    /**
+     * 创建微信登录令牌
+     */
+    public Map<String, Object> createTokenWechat(LoginUser loginUser)
+    {
+        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());
+        refreshTokenWechat(loginUser);
+
+        // Jwt存储信息
+        Map<String, Object> claimsMap = new HashMap<String, Object>();
+        claimsMap.put(SecurityConstants.USER_KEY, token);
+        claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
+        claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
+
+        // 接口返回信息
+        Map<String, Object> rspMap = new HashMap<String, Object>();
+        rspMap.put("access_token", JwtUtils.createToken(claimsMap));
+        rspMap.put("expires_in", 15 * 24 * MILLIS_MINUTE);
+        return rspMap;
+    }
+
+    /**
+     * 刷新微信令牌有效期
+     *
+     * @param loginUser 登录信息
+     */
+    public void refreshTokenWechat(LoginUser loginUser)
+    {
+        loginUser.setLoginTime(System.currentTimeMillis());
+        loginUser.setExpireTime(loginUser.getLoginTime() + 15 * 24 * MILLIS_MINUTE);
+        // 根据uuid将loginUser缓存
+        String userKey = getTokenKey(loginUser.getToken());
+        redisService.setCacheObject(userKey, loginUser, 15L, TimeUnit.DAYS);
+    }
 }