登录
生成验证码
基本思路:后端生成一个表达式,1+1=2
1+1=?@2
1+1=?转成图片传给前端展示
2存入Redis中,用户输入完结果,点击登录的时候,提交到后台和Redis中的数据进行对比,前端反一个图片,返一个UUid
http://localhost/dev-api/captchalmage前端
Vue获取图片,前端还是后端
url请求前段,通过反向代理,映射到后端(将BASE_api(dev_api)替换成''在映射到localhost:8080这样就和后端地址一样了,非常巧妙),解决跨域问题(前后端端口不一样,后端通过配置类,前端通过反向代理vue.config.js里的Proxy)
http://localhost:8080/captchalmage后端
点击登录的具体流程
- 校验验证码
- 校验用户名和密码
- jwt生成token
使用异步任务管理器,结合线程池,实现了异步的操作日志记录
getInfo
获取当前用户的角色和权限信息,存储到Vuex中
getRouters
根据当前用户的权限动态获取动态路由(调用后端menuService.selectMenuTreeByUserId(userId))
数据库中菜单的级联关系,通过parent_id,0代表没有父级,代表一级菜单
通过menu_id和parent_id设置父子级的关系
用到了递归,遍历菜单的层级关系,递归必须要有出口(if(hasChild()))
用户管理
流程:加载Vue页面,请求后台数据
1.getList()
2.startPage()
树状图treeselect
- 前端用<el-tree>组件
- 数据库设计有parent_id(0就是父节点)和dept_id字段
- 后端调用buildDeptTreeSelect方法,然后再递归,逐级遍历,找到子节点
1.发请求查询出所有部门的数据
2.组装成树状结构
因为<el-tree>有点击事件,会调用handleNodeClick(),把deptI传进去,再调用getList()查询对应的信息
添加数据
reset()是重置表单
getTreeselect()是获取树状图
getUser()获取岗位和角色的下拉列表
填写完表单点击确定,触发submit()方法,进行判断,如果有userId就是修改,否则就是添加
代码自动生成
1.创建数据表
CREATE table test_user(
id int PRIMARY KEY auto_increment,
name VARCHAR(11),
PASSWORD VARCHAR(11)
)
2.系统工具=》代码生成
提交
解压
导入代码,重启项目
重启项目
加图标
权限,代码生成,工具类,导入导出,定时任务,日志配置,事务,jwt
created,mouted
定时任务
场景:数据备份,统计报表,清理日志
常用的三种方法:
- Timer(java原生)
- ScheduleExcutorService
- Spring Task
开启定时任务,只需要在Spring Boot的启动类上声明@EnableScheduling即可
添加定时任务,用@Schedule注解