Selaa lähdekoodia

交易市场平台(供应商)

wwh 2 viikkoa sitten
vanhempi
commit
7253a70727

+ 45 - 0
baqing-admin/src/test/java/com/ruoyi/framework/config/FastJson2JsonRedisSerializerTest.java

@@ -0,0 +1,45 @@
1
+package com.ruoyi.framework.config;
2
+
3
+import static org.junit.jupiter.api.Assertions.assertEquals;
4
+import static org.junit.jupiter.api.Assertions.assertNotNull;
5
+
6
+import com.ruoyi.common.core.domain.model.LoginUser;
7
+import org.junit.jupiter.api.DisplayName;
8
+import org.junit.jupiter.api.Test;
9
+
10
+@DisplayName("FastJson2JsonRedisSerializer")
11
+class FastJson2JsonRedisSerializerTest
12
+{
13
+    private static final String LEGACY_LOGIN_USER_JSON =
14
+            "{\"@type\":\"com.ruoyi.common.core.domain.model.LoginUser\",\"browser\":\"Chrome 148\","
15
+                    + "\"deptId\":103L,\"expireTime\":1780467419148,\"ipaddr\":\"115.238.57.190\","
16
+                    + "\"loginLocation\":\"XX XX\",\"loginTime\":1780465619148,\"os\":\"Windows10\","
17
+                    + "\"permissions\":Set[\"*:*:*\"],\"token\":\"22e5d643-b819-4e3a-bb97-0fd65739ff51\","
18
+                    + "\"user\":{\"admin\":true,\"createBy\":\"admin\",\"createTime\":\"2026-05-09 10:26:46\","
19
+                    + "\"delFlag\":\"0\",\"dept\":{\"ancestors\":\"0,100,101\",\"children\":[],"
20
+                    + "\"deptId\":103L,\"deptName\":\"研发部门\",\"leader\":\"若依\",\"orderNum\":1,"
21
+                    + "\"params\":{\"@type\":\"java.util.HashMap\"},\"parentId\":101L,\"status\":\"0\"},"
22
+                    + "\"deptId\":103L,\"email\":\"ry@163.com\",\"loginDate\":\"2026-06-03 13:46:16\","
23
+                    + "\"loginIp\":\"115.238.57.190\",\"nickName\":\"超级管理员\","
24
+                    + "\"params\":{\"@type\":\"java.util.HashMap\"},\"phonenumber\":\"15888888888\","
25
+                    + "\"pwdUpdateDate\":\"2026-05-09 10:26:46\",\"remark\":\"管理员\","
26
+                    + "\"roles\":[{\"admin\":true,\"dataScope\":\"1\",\"deptCheckStrictly\":false,"
27
+                    + "\"flag\":false,\"menuCheckStrictly\":false,"
28
+                    + "\"params\":{\"@type\":\"java.util.HashMap\"},\"roleId\":1L,\"roleKey\":\"admin\","
29
+                    + "\"roleName\":\"超级管理员\",\"roleSort\":1,\"status\":\"0\"}],"
30
+                    + "\"sex\":\"1\",\"status\":\"0\",\"userId\":1L,\"userName\":\"admin\"},"
31
+                    + "\"userId\":1L,\"username\":\"admin\"}";
32
+
33
+    @Test
34
+    @DisplayName("反序列化含 admin 字段的历史 LoginUser 缓存")
35
+    void deserializeLegacyLoginUserWithAdminField()
36
+    {
37
+        FastJson2JsonRedisSerializer<LoginUser> serializer = new FastJson2JsonRedisSerializer<>(LoginUser.class);
38
+        LoginUser loginUser = serializer.deserialize(LEGACY_LOGIN_USER_JSON.getBytes(FastJson2JsonRedisSerializer.DEFAULT_CHARSET));
39
+        assertNotNull(loginUser);
40
+        assertEquals(1L, loginUser.getUserId());
41
+        assertNotNull(loginUser.getUser());
42
+        assertEquals("admin", loginUser.getUser().getUserName());
43
+        assertEquals("22e5d643-b819-4e3a-bb97-0fd65739ff51", loginUser.getToken());
44
+    }
45
+}

+ 2 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java

@@ -6,6 +6,7 @@ import javax.validation.constraints.NotNull;
6 6
 import javax.validation.constraints.Size;
7 7
 import org.apache.commons.lang3.builder.ToStringBuilder;
8 8
 import org.apache.commons.lang3.builder.ToStringStyle;
9
+import com.alibaba.fastjson2.annotation.JSONField;
9 10
 import com.ruoyi.common.annotation.Excel;
10 11
 import com.ruoyi.common.annotation.Excel.ColumnType;
11 12
 import com.ruoyi.common.core.domain.BaseEntity;
@@ -84,6 +85,7 @@ public class SysRole extends BaseEntity
84 85
         this.roleId = roleId;
85 86
     }
86 87
 
88
+    @JSONField(serialize = false, deserialize = false)
87 89
     public boolean isAdmin()
88 90
     {
89 91
         return isAdmin(this.roleId);

+ 2 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java

@@ -12,6 +12,7 @@ import com.ruoyi.common.annotation.Excel.ColumnType;
12 12
 import com.ruoyi.common.annotation.Excel.Type;
13 13
 import com.ruoyi.common.annotation.Excels;
14 14
 import com.ruoyi.common.core.domain.BaseEntity;
15
+import com.alibaba.fastjson2.annotation.JSONField;
15 16
 import com.ruoyi.common.utils.SecurityUtils;
16 17
 import com.ruoyi.common.xss.Xss;
17 18
 
@@ -116,6 +117,7 @@ public class SysUser extends BaseEntity
116 117
         this.userId = userId;
117 118
     }
118 119
 
120
+    @JSONField(serialize = false, deserialize = false)
119 121
     public boolean isAdmin()
120 122
     {
121 123
         return SecurityUtils.isAdmin(this.userId);

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

@@ -4,6 +4,7 @@ import java.util.Collection;
4 4
 import java.util.HashMap;
5 5
 import java.util.Map;
6 6
 import java.util.concurrent.TimeUnit;
7
+
7 8
 import org.slf4j.Logger;
8 9
 import org.slf4j.LoggerFactory;
9 10
 import org.springframework.beans.factory.annotation.Autowired;
@@ -72,8 +73,7 @@ public class TokenService
72 73
                 // 解析对应的权限以及用户信息
73 74
                 String uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
74 75
                 String userKey = getTokenKey(uuid);
75
-                LoginUser user = redisCache.getCacheObject(userKey);
76
-                return user;
76
+                return redisCache.getCacheObject(userKey);
77 77
             }
78 78
             catch (Exception e)
79 79
             {