Pu Zhibing
2025-05-15 7a4f9541331bef779a506b38a27ed5c3373c0bec
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;
@@ -60,7 +61,6 @@
      claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
      claimsMap.put(SecurityConstants.USER_TYPE, "system");
      claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
      // 接口返回信息
      Map<String, Object> rspMap = new HashMap<String, Object>();
      rspMap.put("access_token", JwtUtils.createToken(claimsMap));
@@ -94,7 +94,7 @@
   public LoginUserApplet getLoginUserApplet() {
      LoginUserApplet loginUserAppletToken = getLoginUserAppletToken(ServletUtils.getRequest());
      if (loginUserAppletToken == null) {
         throw new UserAppletException("登录失效,请重新登录!", 401);
         throw new NotLoginException("令牌已过期,请重新登录!");
      }
      return loginUserAppletToken;
   }
@@ -130,7 +130,11 @@
    * @return 用户信息
    */
   public LoginUser getLoginUser() {
      return getLoginUser(ServletUtils.getRequest());
      LoginUser loginUser = getLoginUser(ServletUtils.getRequest());
      if (loginUser == null) {
         throw new NotLoginException("令牌已过期,请重新登录!");
      }
      return loginUser;
   }
   
   /**
@@ -203,19 +207,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;
   }
}