NutzCN Logo
问答 sys_user表自动清空
发布于 1824天前 作者 buyubuyu 1592 次浏览 复制 上一个帖子 下一个帖子
标签: nutzwk

登录superadmin用户操作的时候会出现偶发的sys_role数据表清空动作,检查了一下代码也没找到问题在哪,有点懵逼

9 回复

什么版本,如何重现,你确定没有其他人操作?

目前已知的是多个窗口/人登录superadmin操作的时候会偶发这种情况

把 SysRoleServiceImpl 里 @Async 异步注解删除看看

是我写错了...是sys_user表 版本是5.0X (大脑糊涂了)

确定没人干坏事?一个人建一个登陆帐号,且不分配系统管理权限,superadmin别给别人。

    @At("/enable/?")
    @Ok("json")
    @RequiresPermissions("sys.manager.user.edit")
    @SLog(tag = "启用用户", msg = "用户名:${args[1].getAttribute('loginname')}")
    public Object enable(String userId, HttpServletRequest req) {
        try {
            req.setAttribute("loginname", sysUserService.fetch(userId).getLoginname());
            sysUserService.update(Chain.make("disabled", false), Cnd.where("id", "=", userId));
            sysUserService.clear();
            return Result.success();
        } catch (Exception e) {
            return Result.error();
        }
    }

    @At("/disable/?")
    @Ok("json")
    @RequiresPermissions("sys.manager.user.edit")
    @SLog(tag = "禁用用户", msg = "用户名:${args[1].getAttribute('loginname')}")
    public Object disable(String userId, HttpServletRequest req) {
        try {
            String loginname = sysUserService.fetch(userId).getLoginname();
            if ("superadmin".equals(loginname)) {
                return Result.error("system.not.allow");
            }
            req.setAttribute("loginname", loginname);
            sysUserService.update(Chain.make("disabled", true), Cnd.where("id", "=", userId));
            sysUserService.clear();
            return Result.success();
        } catch (Exception e) {
            return Result.error();
        }
    }

https://github.com/Wizzercn/NutzWk/blob/v5.x/wk-app/wk-nb-web-vue/src/main/java/cn/wizzer/app/web/modules/controllers/platform/sys/SysUserController.java
问题找到了
启用禁用都调用了clear方法,所以user表没有了

我的锅,调错方法了 clearCache

或改成 sysUserService.deleteCache(userId);

添加回复
请先登陆
回到顶部