问题描述:
前端退出登录清空storage和session返回登录页面,再使用一个新的账号进入系统时,发现页面上出现了未在权限中分配的菜单,刷新后消失。如果单纯在登录页生命周期里加window.reload()方法会一直刷新,但是不刷新又难以解决缓存问题
问题解决:
在退出登录的前端方法中
// 退出登录的函数
logOut(){
//此处省略退出登录的接口
......
// 退回到登录页
this.$router.push({
// 一定要使用name和params方式跳转与传参
name:"登录页",
params:{
//任意字段,任意值
isLogout:"1"
})
}
在登录页中
created(){
if(this.$router.params.isLogout == "1"){
window.reload();
}
}
原理分析
vue路由跳转有两种方式,使用name跳转时保存在params中的参数时存在 内存 中的,从退出登录中的函数携带过去的参数进行第一次判断刷新页面,此时参数已经不存在了,再次进入登录页的生命周期中不会再进入刷新的方法,这样就解决了刷新清除缓存和只刷新一次的要去