四、若依获取动态路由
1、获取动态路由
2、全局路由守卫
2.1)用户在登录后,会发出3个请求,分别是login,getinfo,getRouters。分别代表了请求登录,获取用户角色和权限,获取动态路由。getinfo,getRouters是配置在路由守卫中的。
3、前端
3.1)在router在index.js文件中,默认已经读取了公共(静态)路由数据,系统确实的是动态路由数据,并且index.js文件中写死的动态路由数据也没有读取。
3.2)getRouters方法在permission.js文件中,与全局路由守卫的文件名相同但是不是同一个文件。会调用getRouters方法发起request请求。
3.3)在request.js文件中,配置了请求拦截,让一些请求携带token。
3.4)分析permission.js文件中的getRouters()方法,在请求完成后,首先会把router下index.js文件中写死的动态路由数据进行添加,然后加工从后台获取的动态路由数据然后返回。
3.5)在全局路由守卫,即permission.js文件中,对3.4步骤中返回的后端获取的动态路由数据进行操作,把数据添加到router中。
4、后端
4.1)后端对所有请求进行拦截,获取token,生成对象保存在spring secruity中。
4.2)在控制层,读取4.1步骤中存放在spring secruity的数据,然后调用menuService.selectMenuTreeByUserId从数据库获取动态路由。
4.3)调用mapper从数据库查询数据然后返回。