甲方提方案让坐实时权限 让在一级路由出口处写请求 并且存放到sessionstorage, 再从本地缓存拿到vuex,这样虽然做到了F5刷新页面可以拿到最新的权限, 但是如果用户在浏览一个路由级别的页面时,管理员卸载这个路由权限用户刷新之后还可以访问这个路由级别的页面,而其他卸载的路由级别页面都已被卸载。怀疑是浏览器页面缓存问题
普通刷新不会清掉sessionstorage,所以每次获取权限时候,应该要清掉重新设置应该就可以了
所以你卸载 权限时也要用代码 执行 sessionstorage.clear() 或者 删除 关于权限的 存储。执行clear是所有的都清楚,鉴于 你可能存了别的东西所以 还是 只删除 关于权限的就行了。因为 会删除 ,所以 你每次读 本地时要做个判断
if(local.sessionstorage.getItem("xx")){
// 存在再 转换使用 防止报错
}
可以尝试以下两种方式来解决页面缓存问题:
// 在请求URL后添加随机数或时间戳参数
let url = 'http://example.com/api/data?timestamp=' + new Date().getTime();
axios.get(url).then(res => {
// 处理请求数据
})
// 设置缓存控制头
router.afterEach((to, from) => {
const isBack = from.name && to.meta.isBack !== false;
if(isBack) {
// 如果是后退操作,则设置缓存过期时间为0秒
res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate')
res.setHeader('Pragma', 'no-cache');
res.setHeader('Expires', 0);
} else {
// 如果不是后退操作,则设置缓存过期时间为60秒
res.setHeader('Cache-Control', 'max-age=60')
}
})
这两种方式可以根据具体情况进行选择和组合使用,解决浏览器页面缓存的问题。