Pu Zhibing
2025-05-07 8c6ed6820e53c27fa40973da285fd39a66424540
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -5,6 +5,7 @@
import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import com.ruoyi.common.core.exception.auth.NotLoginException;
import com.ruoyi.common.core.exception.user.UserAppletException;
import com.ruoyi.system.api.model.LoginUserApplet;
import org.springframework.beans.factory.annotation.Autowired;
@@ -61,9 +62,12 @@
      claimsMap.put(SecurityConstants.USER_TYPE, "system");
      claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
      
      String token1 = JwtUtils.createToken(claimsMap);
      String userKey = getUserKey(loginUser.getUserid());
      redisService.setCacheObject(userKey, token1, expireTime, TimeUnit.MINUTES);
      // 接口返回信息
      Map<String, Object> rspMap = new HashMap<String, Object>();
      rspMap.put("access_token", JwtUtils.createToken(claimsMap));
      rspMap.put("access_token", token1);
      rspMap.put("expires_in", expireTime);
      return rspMap;
   }
@@ -94,7 +98,7 @@
   public LoginUserApplet getLoginUserApplet() {
      LoginUserApplet loginUserAppletToken = getLoginUserAppletToken(ServletUtils.getRequest());
      if (loginUserAppletToken == null) {
         throw new UserAppletException("登录失效,请重新登录!", 401);
         throw new NotLoginException("令牌已过期,请重新登录!");
      }
      return loginUserAppletToken;
   }
@@ -130,7 +134,11 @@
    * @return 用户信息
    */
   public LoginUser getLoginUser() {
      return getLoginUser(ServletUtils.getRequest());
      LoginUser loginUser = getLoginUser(ServletUtils.getRequest());
      if (loginUser == null) {
         throw new NotLoginException("令牌已过期,请重新登录!");
      }
      return loginUser;
   }
   
   /**
@@ -203,19 +211,23 @@
      loginUser.setLoginTime(System.currentTimeMillis());
      loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
      // 根据uuid将loginUser缓存
      String userKey = getTokenKey(loginUser.getToken());
      redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
      String tokenKey = getTokenKey(loginUser.getToken());
      redisService.setCacheObject(tokenKey, loginUser, expireTime, TimeUnit.MINUTES);
   }
   
   public void refreshToken1(LoginUserApplet dto) {
      dto.setLoginTime(System.currentTimeMillis());
      dto.setExpireTime(dto.getLoginTime() + expireTime * MILLIS_MINUTE);
      dto.setExpireTime(dto.getLoginTime() + expireAppletTime * MILLIS_MINUTE);
      // 根据uuid将loginUser缓存
      String userKey = getTokenKey(dto.getToken());
      redisService.setCacheObject(userKey, dto, expireTime, TimeUnit.MINUTES);
      redisService.setCacheObject(userKey, dto, expireAppletTime, TimeUnit.MINUTES);
   }
   
   private String getTokenKey(String token) {
      return ACCESS_TOKEN + token;
   }
   private String getUserKey(Long userid) {
      return ACCESS_TOKEN + userid;
   }
}