TokenSession 存入的对象取出时会被修改为LinkedHashMap类型
使用版本:
solon 3.2.1 satoken 1.42.0
报错信息:
从图中观察,再一次请求过程中, 通过StpUtil获取两次TokenSession,整个过程中没有其他的业务代码干扰的情况下,出现存入的对象信息被转换为了Map对象。导致无法正确的获取想要的数据
希望结果:
类型保持一致
复现步骤:
涉及到的依赖
~~~
<!-- sa-token -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-solon-plugin</artifactId>
</dependency>
<!-- sa-token redisson依赖, 使用redis时加入。 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-redisson</artifactId>
</dependency>
<!-- sa-token snack3 序列化框架 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-snack3</artifactId>
</dependency>
~~~
< 备注:如果复现步骤比较复杂,请将 demo 上传到 gitee 并留下地址 >
换 getModel() 方法来取值
换 getModel() 方法来取值
尝试了 sa-token-snack3和sa-token-jackson两个不同的库,情况依然一样
换 getModel() 方法来取值
均在清空浏览器token信息和重启后端项目后进行的测试
清空浏览器没用,你得把redis数据清空了再测试
redis数据库也清空尝试了,没有作用。 我尝试了更换存储的key名,创建一个一摸一样的Test类进行存储和获取一样出现了问题。 目前排查出的结果是 当对象中存在 List,Set的类型字段并且不为null时,就会出现获取对象时变为map的情况。
1.42.0 版本 snake 保存数据时 会丢失类型信息 无法反序列化成功
但是 getModel 指定类型后仍旧 无法反序列化成功 有点不科学
Jackson 在保存数据时 是保存类型信息的,仍旧无法反序列化成功,更不科学了