【多空间BUG反馈】本地缓存导致的多空间插件无法正常加载与回滚-并显示:您没有权限操作空间


图片无法正常加载:已把内容同步与CSDN:[Nocobase]多空间bug-您没有权限操作空间-CSDN博客

1.Bug简述

在启动商业多空间插件后,正常创建四个子空间划分,并创建了一系列数据。未发现异常


但在无代码修改的某一次启动中,系统后台反馈:“您没有权限操作空间 s_test”

并且伴随着无法进行登录(可以发起登录,但是会被挡住,反馈403)


解决操作:

1.在清空本地浏览器缓存后,可以进行登录,但是界面右上角下拉列表,所有子空间划分消失。

2.查阅数据库,在数据库中spaceUser字段存在,space字段也正常存在

3.删除spaceUser数据库中本用户的对应值

4.清空本地浏览器缓存,并重新登录,恢复正常

[image]​编辑

2.Bug复现与解决

在我使用测试司机001账户·进行登录后,正常进入页面,但此时该账户显示四个空间

实际我只分配了未打码的(未分配空间)这一个空间

当我点击其他未分配空间时,即刻复现该Bug

[image]​编辑

再次被清空所有空间列表,并且无法切换回原有(未分配空间)的空间

因为此时管理员用户可正常登录,故我使用管理员账户移除该用户后,重新添加

[image]​编辑

测试司机001账户所在浏览器,清空本地缓存,刷新,重新登录,此时恢复正常,并且此时只显示存在一个空间:(未分配空间)

3.Bug个人分析

1.因为我该项目未有 s_test 空间,另外一个项目有 s_test 空间,且之前开启过另外一个项目,均为​http://localhost:13003/端口

2.故浏览器本地缓存错误记录s_test空间,进行登录操作时,无该空间字段,Space插件错误

3.又因此时我处于不存在的 s_test 空间,又无法切换回原本已有空间,故出现已有空间 字段消失

[image]​编辑

4.此多空间插件bug会影响登录校验,并返回403,导致在有本地缓存的登录界面(无多空间切换页面)会一直默认导向不存在的空间 s_test

4.Bug期望修复

1.当指向错误空间时,可以回推倒当前正确空间

2.当指向错误空间,进行切换之前,增强校验,并给出提示,并清空本地多空间有关的缓存

3.增强多项目之前切换时,对多空间本地存储的管理(例如从数据库读取当前用户指向空间)

4.修复BUG:当指向错误空间时,其他正常空间无法显示的BUG,显示为:(无空间)

5.当该缓存显示,该用户无任何空间时,需要扫描一轮SpaceUser表,避免误判。

你好 ,我没有理解bug复现的描述,请录屏举例说明下

在demo环境中复现下这个问题
https://a_8hwne7u84ho.v13.demo.nocobase.com/admin/ (NocoBase 默认账户密码)

您好,已复现bug

复现流程:
1.按f12
2.点击【本地存储空间】
3.编辑NOCOBASE_X-SPACES和NOCOBASE_X-SPACES-VIEW,修改为未存在的空间名(我改为了temp111)
4.即刻复现,持续提醒【您没有权限操作空间 team111, team111】。且显示【选择空间-你必须先加入一个空间才能创建记录】,无法切换回team1

登录被限制Bug:
1.如果登录时,【本地存储空间】也存在NOCOBASE_X-SPACES和NOCOBASE_X-SPACES-VIEW,或者登录拉去的NOCOBASE_X-SPACES和NOCOBASE_X-SPACES-VIEW为错误的空间指向。则一直卡住无法登录。

视频链接等会同步。

通过网盘分享的文件:QQ202647-105011.mp4等2个文件
链接: 百度网盘 请输入提取码 提取码: 2c8k

视频已录制,视频演示的是自己修改的本地存储,原本触发逻辑未知。

原触发逻辑猜测原因,是我有两个独立的项目,有独立的空间命名(A项目:s_test)(B项目:no_space)

启动项目A后,关闭项目A,再启动项目B,本地存储未清空且因为某些原因持久化存储,导致登录一直失败,显示“您没有权限操作空间 s_test”。

我当时尝试了清空所有本地存储,无法通过登录校验。后台提示“您没有权限操作空间 s_test”。

我选择切换浏览器登录,能正常登录,但是显示无空间【选择空间-你必须先加入一个空间才能创建记录】即多空间失效,创建的所有包含space的数据无展示。

此时我删除数据库的SpaceUser字段和本用户相关的关联关系并重新添加,恢复正常

我的意思正常操作 ,不是人为修改 。

正常操作复现情况位置,只有对应的报错提示,我基于可能的原因做的人为操作复现。期望增加多空间的异常处理

请问正常操作是否可以复现, 不是去改浏览器的存储

可以正常复现,我是正常使用触发了这个bug,才进行排查的。
但是正常操作非稳定复现。

正常复现的操作我写在第三点了

3.Bug个人分析

1.因为我该项目未有 s_test 空间,另外一个项目有 s_test 空间,且之前开启过另外一个项目,均为​http://localhost:13003/
2.故浏览器本地缓存错误记录s_test空间,进行登录操作时,无该空间字段,Space插件错误
3.又因此时我处于不存在的 s_test 空间,又无法切换回原本已有空间,故出现已有空间 字段消失

至于为什么会出现本地浏览器缓存错误记录,这个是未知的。

是否在生产环节中,也有概率出现类似问题。例如:两个用户使用一个电脑登录同一个系统,分配了不同的多空间,因为一些原因缓存错误,导致多空间卡住且无法回滚。

至于您们怎么处理是您们内部判断,我只是提供在使用过程中遇到的各类问题