当前位置: 首页>后端>正文

路由权限登录后还保留上一个登录角色的权限,刷新一下就好了的解决方案

描述

在做权限的时候,角色一不能查看abc路由,角色一退出,管理员登录,管理员有全部访问权限,但是管理员登录后还还是角色一的路由权限,abc路由不能访问。但是刷新一下就可以了。

1.退出解决

在退出登录的时候加上 location.reload()

import Cookie from 'js-cookie'
const state = {
  menu: []
}
const mutations = {
    // 设置menu的数据
    setMenu(state, val) {
      state.menu = val
      Cookie.set('menu', JSON.stringify(val))
    },

    logOut(state, router) {
      // 清除token信息
      Cookie.remove('token')
      // 清除cookie中的menu
      Cookie.remove('menu')
      location.reload(); // 为了重新实例化vue-router对象 避免bug
      // window.location.reload(); // 强制刷新
      // 跳转到登录页面
      router.push('/login')
    }
}

2.登录前解决

vue addRoutes动态添加路由后,切换帐号,重新添加路由

项目后台需要权限分配,做好之后发现切换帐号的话还是之前的路由,并没有重新添加
解决方法:
login.vue页面(动态添加路由的上一个页面)

created() {
  // 判断是否已经刷新
  if (this.$store.getters.addRouters.length > 0) {
    location.reload()
  }
}

注意

不要使用 window.location.reload() 刷新,因为在退出以后还会有一个几秒的白屏阶段,用户体验不好,而使用 location.reload()就不会存在这个问题。


https://www.xamrdz.com/backend/3qk1942700.html

相关文章: