Pu Zhibing
2025-03-25 d3e9a09cb54017a8063e5bfe3ace5012f66f3130
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -5,8 +5,8 @@
import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import com.ruoyi.common.core.exception.user.UserAppletException;
import com.ruoyi.system.api.model.LoginUserApplet;
import com.ruoyi.common.core.exception.auth.NotPermissionException;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.constant.CacheConstants;
@@ -18,7 +18,6 @@
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.model.LoginUser;
/**
 * token验证处理
@@ -49,8 +48,6 @@
      Long userId = loginUser.getSysUser().getUserId();
      String userName = loginUser.getSysUser().getUserName();
      loginUser.setToken(token);
      loginUser.setUserid(userId);
      loginUser.setUsername(userName);
      loginUser.setIpaddr(IpUtils.getIpAddr());
      refreshToken(loginUser);
      
@@ -60,6 +57,7 @@
      claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
      claimsMap.put(SecurityConstants.USER_TYPE, "system");
      claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
      claimsMap.put(SecurityConstants.EXPIRATION_TIME, System.currentTimeMillis() + expireTime * MILLIS_MINUTE);
      
      // 接口返回信息
      Map<String, Object> rspMap = new HashMap<String, Object>();
@@ -71,10 +69,10 @@
   /**
    * 创建小程序令牌
    */
   public Map<String, Object> createTokenApplet(LoginUserApplet loginUser) {
   public Map<String, Object> createTokenApplet(LoginUser loginUser) {
      String token = IdUtils.fastUUID();
      Long userId = loginUser.getUserId();
      String name = loginUser.getName();
      Long userId = loginUser.getUserid();
      String name = loginUser.getUsername();
      loginUser.setToken(token);
      loginUser.setIpaddr(IpUtils.getIpAddr());
      refreshToken1(loginUser);
@@ -84,6 +82,7 @@
      claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
      claimsMap.put(SecurityConstants.USER_TYPE, "applet");
      claimsMap.put(SecurityConstants.DETAILS_USERNAME, name);
      claimsMap.put(SecurityConstants.EXPIRATION_TIME, System.currentTimeMillis() + expireAppletTime * MILLIS_MINUTE);
      // 接口返回信息
      Map<String, Object> rspMap = new HashMap<String, Object>();
      rspMap.put("access_token", JwtUtils.createToken(claimsMap));
@@ -91,18 +90,27 @@
      return rspMap;
   }
   
   public LoginUserApplet getLoginUserApplet() {
      LoginUserApplet loginUserAppletToken = getLoginUserAppletToken(ServletUtils.getRequest());
   public LoginUser getLoginUserApplet() {
      LoginUser loginUserAppletToken = getLoginUserAppletToken(ServletUtils.getRequest());
      if (loginUserAppletToken == null) {
         throw new RuntimeException("令牌已过期,请重新登录!");
         System.out.println("loginUserAppletToken: "+loginUserAppletToken);
         throw new NotPermissionException("令牌已过期,请重新登录!");
      }
      return loginUserAppletToken;
   }
   
   public LoginUserApplet getLoginUserAppletToken(HttpServletRequest request) {
   public LoginUser getLoginUserAppletToken(HttpServletRequest request) {
      // 获取请求携带的令牌
      String token = SecurityUtils.getToken(request);
      return getLoginUserApplet(token);
   }
   /**
    * 判断用户是否登录
    */
   public boolean isLoginApplet() {
      LoginUser loginUserAppletToken = getLoginUserAppletToken(ServletUtils.getRequest());
      return loginUserAppletToken != null;
   }
   
   /**
@@ -110,8 +118,8 @@
    *
    * @return 用户信息
    */
   public LoginUserApplet getLoginUserApplet(String token) {
      LoginUserApplet user = null;
   public LoginUser getLoginUserApplet(String token) {
      LoginUser user = null;
      try {
         if (StringUtils.isNotEmpty(token)) {
            String userKey = JwtUtils.getUserKeyApplet(token);
@@ -132,7 +140,10 @@
   public LoginUser getLoginUser() {
      LoginUser loginUser = getLoginUser(ServletUtils.getRequest());
      if (loginUser == null) {
         throw new RuntimeException("令牌已过期,请重新登录!");
         throw new NotPermissionException("令牌已过期,请重新登录!");
      }
      if(null == loginUser.getUserid()){
         loginUser.setUserid(loginUser.getSysUser().getUserId());
      }
      return loginUser;
   }
@@ -211,7 +222,7 @@
      redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
   }
   
   public void refreshToken1(LoginUserApplet dto) {
   public void refreshToken1(LoginUser dto) {
      dto.setLoginTime(System.currentTimeMillis());
      dto.setExpireTime(dto.getLoginTime() + expireAppletTime * MILLIS_MINUTE);
      // 根据uuid将loginUser缓存