Browse Source

fix 修改登录使用redis

Administrator 2 years ago
parent
commit
2f6223767c

+ 10 - 9
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java

@@ -2,6 +2,7 @@ package com.ruoyi.web.controller.monitor;
 
 import java.util.*;
 
+import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.framework.web.service.TokenService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -35,18 +36,18 @@ public class SysUserOnlineController extends BaseController {
     @Autowired
     private TokenService tokenService;
 
-//    @Autowired
-//    private RedisCache redisCache;
+    @Autowired
+    private RedisCache redisCache;
 
     @PreAuthorize("@ss.hasPermi('monitor:online:list')")
     @GetMapping("/list")
     public TableDataInfo list(String ipaddr, String userName) {
-//        Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*");
-        Map<String, Object> keys = tokenService.getLoginUsers();
+        Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*");
+        //Map<String, Object> keys = tokenService.getLoginUsers();
         List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
-        for (String key : keys.keySet()) {
-            LoginUser user = (LoginUser) keys.get(key);
-//            LoginUser user = redisCache.getCacheObject(key);
+        for (String key : keys) {
+            //LoginUser user = (LoginUser) keys.get(key);
+            LoginUser user = redisCache.getCacheObject(key);
             if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) {
                 if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) {
                     userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
@@ -75,8 +76,8 @@ public class SysUserOnlineController extends BaseController {
     @Log(title = "在线用户", businessType = BusinessType.FORCE)
     @DeleteMapping("/{tokenId}")
     public AjaxResult forceLogout(@PathVariable String tokenId) {
-        tokenService.removeToken(Constants.LOGIN_TOKEN_KEY + tokenId);
-//        redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + tokenId);
+        //tokenService.removeToken(Constants.LOGIN_TOKEN_KEY + tokenId);
+        redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + tokenId);
         return AjaxResult.success();
     }
 }

+ 6 - 7
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java

@@ -5,13 +5,12 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import javax.servlet.http.HttpServletRequest;
-
 import cn.hutool.cache.CacheUtil;
 import cn.hutool.cache.impl.CacheObj;
 import cn.hutool.cache.impl.TimedCache;
-import com.ruoyi.common.core.redis.RedisCache;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import com.ruoyi.common.core.redis.RedisCache;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.model.LoginUser;
@@ -72,8 +71,8 @@ public class TokenService
             // 解析对应的权限以及用户信息
             String uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
             String userKey = getTokenKey(uuid);
-            LoginUser user = (LoginUser) CACHE_OBJECT.get(userKey);
-            //LoginUser user = redisCache.getCacheObject(userKey);
+            //LoginUser user = (LoginUser) CACHE_OBJECT.get(userKey);
+            LoginUser user = redisCache.getCacheObject(userKey);
             return user;
         }
         return null;
@@ -98,9 +97,9 @@ public class TokenService
         if (StringUtils.isNotEmpty(token))
         {
             String userKey = getTokenKey(token);
-            CACHE_OBJECT.remove(userKey);
+            //CACHE_OBJECT.remove(userKey);
 
-            //redisCache.deleteObject(userKey);
+            redisCache.deleteObject(userKey);
         }
     }
 
@@ -149,7 +148,7 @@ public class TokenService
         loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
         // 根据uuid将loginUser缓存
         String userKey = getTokenKey(loginUser.getToken());
-        CACHE_OBJECT.put(userKey, loginUser);
+        //CACHE_OBJECT.put(userKey, loginUser);
 
         redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
     }