问题
退出后,再次登陆,发现菜单异常 (控制台有输出说路由重复);
原因
路由设置是通过
router.addRoutes(filterRoutes)
来添加的,退出时,并没有清空,再次登陆,又加了一次,所以有重复。需要将路由权限重置 (恢复默认) 将来登录后再次追加才可以,不然的话,就会重复添加
解决
// 在router/index.js文件中配置一个重置路由的方法
// 重置路由
export function resetRouter() {
const newRouter = createRouter()
router.matcher = newRouter.matcher // 重新设置路由的可匹配路径
}
这个方法就是将路由重新实例化,相当于换了一个新的路由,之前加的路由就不存在了,需要在退出的时候, 调用一下即可
import { resetRouter } from '@/router'
// 退出的action操作
logout(context) {
// 重置路由
resetRouter()
}