问题引入
我在做三更的博客后台的时候,出现了许多的BUG,通过这篇文章来记录这些BUG,即是为了提醒自己以后不要犯这样的错,同时如果有小伙伴也在做这个项目时,如果也出现了BUG,并且还未找到解决方案时,可以看一看。
下面我来一一列举后台管理系统中出现的一些BUG:
1.关于securiry中UserDetailService实现类问题。
这是怎么被发现的呢?是因为我在做后台的时候,其实已经是写完了这个后台的用户名的认证工作了,但是呢,因为此时,其实我的后台的页面其实看不到效果的,所以我现在就去看了前台的效果,当我登录的时候,就直接出现了栈溢出错误,后面我查看了我的代码,发现缺少UserDetailsService接口的实现类。
2.一登陆就退出进不去的问题
3.文章置顶问题
下面的问题可能大家不会遇到,只是由于个人的疏忽而导致的
一、系统管理
- 用户管理
1.1 对用户信息进行修改,发现电话号码并未修改
1.2 点击用户状态改变按钮,不能正确的改变用户的状态 - 角色管理
2.1 角色管理中的修改中的菜单权限展现出现问题
二、内容管理
- 文章管理(还有写博客)
1.1 缩略图以及文中图片无法上传 - 分类管理
2.1 点击切换状态前端直接失效,只是一个假按钮
分析问题
对于第一个问题我将详细说明:
其实就是因为我缺少了UserDetailService实现类导致用户名的校验就走的security内部的校验流程,就会出现栈溢出问题。这就是我的问题原因;另外我想说明的是一个项目中不能同时出现两个或者更多UserDetailService的实现类,如果有同样会栈溢出,这个经过测试就知道了,当然如果是不同的模块那还是没问题的,就好像我的blog与admin同时有一个也是没有问题的。
2.一登陆就退出进不去的问题
这个我一直迷惑了很久,后来查看评论才有了思路的,up主说这一般是由于后端接口返回的数据出了问题,该有的字段没有,或者是字段名出现了问题啥的,后来我仔细检查了确实有这个问题,因为登录一进去就是访问getInfo接口,那个用户信息本应该字段名应该是user的,但是我的接口响应的是userInfo,除此之外,getRouters接口也是这样,该返回children我却返回了child,另外并不都是我的问题,前端那边也有问题,前端的push方法名写错了
在这个文件夹里面,具体哪个push我忘记了,因为我已经改了,并且也没有之前的文件了,但是在下图中的文件里面:
3.这个就是前端按钮值映射与数据库中的对应值不符合
前端选择置顶,但是传递给后端却是0,而其实数据库中0是不置顶的,前端代码在这里,同样也是更改之后的:
一、系统管理
1. 用户管理
1.1 对用户信息进行修改,发现电话号码并未修改
这是我的问题,没有为电话号码字段的更新字段,也就是只set了其它,没有set电话号码
1.2 点击用户状态改变按钮,不能正确的改变用户的状态
这个我是通过byId进行修改的,这样不对,因为我只是修改其中一个状态属性,就通过构造条件,设置setStatus即可
2. 角色管理
2.1 角色管理中的修改中的菜单权限展现出现问题
后端的数据返回错误,没有返回正确的数据,是需要所有的菜单Id的,并不是只返回角色对应的菜单Id的,并且注意这里由于超级管理员没有数据,所以不能直接联查,得特判
二、内容管理
1. 文章管理(还有写博客)
1.1 缩略图以及文中图片无法上传
在application文件中缺少了oss的配置
2. 分类管理
2.1 点击切换状态前端直接失效,只是一个假按钮
由于前端还未实现这个功能,所以得写完前端逻辑与后端逻辑(前端逻辑参考用户管理的切换状态按钮)
解决问题
这里只给出点击切换状态前端直接失效,只是一个假按钮的解决方案,其它问题解决方案在分析中已基本给出;
下面三步:
总结
确实来说,我有点马虎了。
首先是没有按照文档所给的前端接口响应数据的规范,导致一些不必要的麻烦出现。
其次对于mp操作数据会出现一些问题,比如说改变一个属性值,就构造即可,而不要直接使用updateById,这样可能会造成数据库中一行数据字段值的缺失,对应该修改的字段,没有set,也就没有修改。
然后就是对于一些第三方工具的使用(这次是oss)可能换一个模块就忘记在数学配置文件中进行配置了。
总的来说还是没有认真的遵循接口规范,然后就是对配置会忘记,使用mp会对某些字段忽略,当然这里还学到了使用security中在一个项目中UserDetailsService接口实现类只能存在一个。