springboot(ssm)+spring security+druid+layui+xadmin2.2实现简单权限管理系统之问题总结和解决方案

一、登录输入正确密码但还是提示密码错误,使用BCryptPasswordEncoder加密

springboot(ssm)+spring security+druid+layui+xadmin2.2实现简单权限管理系统之问题总结和解决方案_第1张图片
解决方案

// 上面通过把输入的密码进行加密和数据库已加密的密码用equals比较的方法,因为每次加密后的密码其实是不一样的
// 将输入的密码和数据加密的密码通过matchers()方法比较可以解决此问题
BCryptPasswordEncoder().matches(oldPassword, sysUser.getPassword());

二、修改菜单时,选择父级菜单时可以选择本身和子菜单,会造成菜单混乱等问题

解决方案:

// 添加一些判断条件进行过滤,从页面传来要修改菜单的id和从数据库查询菜单的父id比较,相等则跳过菜单构建
// 从页面传来要修改菜单的id和从数据库查询菜单id比较,相等则跳过菜单构建
public static void setPermissionsTreeNoSonById(Integer parentId, Integer id, List permissionsAll, JSONArray array) {
        for (SysPermission permission : permissionsAll) {
            if (permission.getParentId().equals(parentId) && !permission.getParentId().equals(id) && !permission.getId().equals(id)) {
                String string = JSONObject.toJSONString(permission);
                JSONObject parent = (JSONObject) JSONObject.parse(string);
                array.add(parent);
                if (permissionsAll.stream().filter(p -> p.getParentId().equals(permission.getId())).findAny() != null) {
                    JSONArray child = new JSONArray();
                    parent.put("child", child);
                    setPermissionsTreeNoSonById(permission.getId(), id, permissionsAll, child);
                }
            }
        }
    }

三、日期组件弹出后立马消失或者不显示

解决方案:

修改日期组件外层div的大小

四、报错:This is no getter for property named “roleId)” in “com.xxx.SysDao”

springboot(ssm)+spring security+druid+layui+xadmin2.2实现简单权限管理系统之问题总结和解决方案_第2张图片
解决方案:

粗心sql写错,要仔细检查sql语句,字段名,表面,参数名是否一 一对应

五、配置druid一些Filter后发现修改操作和删除操作全部失败

解决方案:

# 将下面配置改成true
delete-allow: true
drop-table-allow: true
multi-statement-allow: true

六、请求返回数据,不跳转页面

解决方案:

去掉方法上的@ResponseBody注解
还有一种就是如果在类上面使用的时@RestController,如果需要跳转页面需使用@Controller

七、查询出来的日期不对,新增操作日期也不对,来来回回日期少了16个小时

解决方案:

docker容器时间比系统时间少8小时
启动docker容器添加 -e TZ=Asia/Shanghai
配置数据库连接使用serverTimezone=Asia/Shanghai
实例类中日期字段上使用@JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8”)

八、一些500错误

大多数情况是返回数据到渲染到页面时报错,有js写错,需要获取的数据字段写错等

注:有什么问题或需要帮助的可以评论或者微信扫描右边二维码联系我。

你可能感兴趣的:(框架学习)