角色管理前端
1.登录不跳转
将原本的mock服务器改到本地(localhost端口后)发现服务器返回200,但是登录不跳转的情况,寻找问题两小时后终于找到了解决方案:
![](https://i-blog.csdnimg.cn/blog_migrate/630faeb2b30ba6f2de2e8241b267dcbc.png)
Result类中返回的应该是data而不是date,在vue-admin-template中接收的数据都是用的data所以导致了登录返回成功,却不跳转的问题。
2.分页插件点击不跳转
之前用element的时候并没有出现这个问题,猜测可能试导入的版本不是最新版本,或者其他问题导致的,查阅后得到
![](https://i-blog.csdnimg.cn/blog_migrate/ade1de43610f9b7fb2b6ed730b3cb4b2.png)
// 在current-page后加入.sync
:current-page.sync="currentPage"
3.删除最后一页的所有数据后页面不跳转至前一页
删除最后一页的所有数据后页面不跳转至前一页,而是展示No Data,log后发现currentPage没有改变。也是一个之前没碰到过的BUG。
![](https://i-blog.csdnimg.cn/blog_migrate/78952f125f33ad4178967f05ac29aed4.png)
在删除后进行一个简单的逻辑判断,判断按照逻辑应该存在的页数 和 当前变量存储的页数,进行比较,即可判断是否需要更新当前页。
// 计算出一共有多少页
this.totalPage = Math.ceil((this.total - 1) / this.pageSize)
// 当前页码数大于了总页码数,就进行如下处理
if (this.currentPage > this.totalPage) {
this.currentPage = this.totalPage
this.fetchData()
}
4.批量删除最后一页跳转问题
// 计算出一共有多少页
this.totalPage = Math.ceil((this.total - this.selections.length) / this.pageSize)
// 当前页码数大于了总页码数,就进行如下处理
if (this.currentPage > this.totalPage) {
this.currentPage = this.totalPage
this.fetchData()
}
和删除单条记录相似,主要是删除后总页数的更新
用户管理
1.SysUser::getUsername报错
![](https://i-blog.csdnimg.cn/blog_migrate/b0212393f30d331d25a88649db3a2f65.png)
如图所示,爆了红,简单排查后发现是在new之后快捷键生成变量名时,自动生成的泛型出现了问题,自动生成的是Object而代码中需要的是实体类的泛型
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
将传入的泛型修改为SysUser后即可成功
菜单管理
树形查询
树形菜单结构分析_qq_53303697的博客-CSDN博客
2.登录权限管理
(权限管理)根据登录用户角色权限获取对应菜单_qq_53303697的博客-CSDN博客
前端权限对接
1.登录不跳转问题
在根据md文档修改完前端代码逻辑之后,点击登录无法登录。
![](https://i-blog.csdnimg.cn/blog_migrate/83690bb0b9c2ea4ecce23ba4ef9b0cee.png)
网络请求是正常发送和响应的,但是分析了后端程序代码逻辑上应该是正确的
![](https://i-blog.csdnimg.cn/blog_migrate/efc1b3d9134a77eb9cc5fefe94e67c30.png)
根据前端报错,发现是permission中的问题,定位到代码如下
![](https://i-blog.csdnimg.cn/blog_migrate/a86843083e2efa9b12c9749ca244dd9a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9f50bd7539cd02eb0e1aea5312f7646f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/715638cdb424c6409a491632d2e9c53f.png)
发现menu属性接收的是routers属性,但是我们分析后发现
![](https://i-blog.csdnimg.cn/blog_migrate/1a853dc796ddbd02c2867495a5a9d467.png)
返回的是router所以报错,将后端代码改为routers即可
![](https://i-blog.csdnimg.cn/blog_migrate/3e8f37ea9b29a8b9a38d0ffd1a2a36b0.png)
2. 创建文件夹
文档中遗漏了一些文件夹的创建,导致了登录时候会报错,自己额外加上即可
![](https://i-blog.csdnimg.cn/blog_migrate/7479889e570ee999f2630c6a27eb4ec2.png)
3.系统管理中没有任何菜单
![](https://i-blog.csdnimg.cn/blog_migrate/3fe5eaa38d51241fd8b6c05cffd75fff.png)
如图所示,只有系统管理中没有任何的子菜单,但是其他管理中都有,同时在网络请求info中也没有children的数据,那么就排除了前后端代码逻辑的问题,一定是数据库数据存储错误。
![](https://i-blog.csdnimg.cn/blog_migrate/f7f2515515e01c9371b2ddfdd8b3948c.png)
经过对parent_id的分析,我发现一开始将系统管理的id设置为了1,可能是一不小心设置的,将id改为2后,即可正常显示。
4.Redis报错
之前学习过Redis,再项目视频中使用的是redisTemplate,我的建议是使用StringRedisTemplate,所以我将所有的redisTemplate都改为了StringRedisTemplate,但是在启动项目的时候出现报错如下:
![](https://i-blog.csdnimg.cn/blog_migrate/484a4007daaa999790ee6b504cbfa805.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f7aee764a2c8220dc60b0d7b8a575f72.png)
看了报错后,简单分析是stringRedisTemplate的注入出现了问题。显而易见的问题出来了找不到commons pool2,可能是因为stringRedisTemplate和这个连接池的某种绑定?不清楚,不过在翻看之前的Redis学习项目中确实是这样引入的,同时百度后发现另一种解决方案,这边提供两种。
引入commons-pool2依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2.引入RedisCilent
<!--引入RedisCilent-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
Something Todo
视频中将Bean转换为实体类非常的丑陋,后续重构此模块
![](https://i-blog.csdnimg.cn/blog_migrate/78d1dcc09c947e087a3350d95db3e46e.png)
对于token的过期,退出有待完善
token过期、token自动续约、退出token失效的完善主要再Redis中完成。
权限完善
后端的每个接口都需要加上对权限的判断,实例如下
![](https://i-blog.csdnimg.cn/blog_migrate/8931cc839c390d9378d3c9525b9ace89.png)
前端的按钮也需要进行权限的判断,实例如下:
![](https://i-blog.csdnimg.cn/blog_migrate/61c5a249b2953ba3622e67b1cc12c654.png)
项目改造与完善
有打算写入毕设或建立 需要更加完善 可以私信大大哦!