vue if判断_vue 路由权限

7e04fa03641f4495c5e39094cd6a93f7.png

附上girhub 地址:

loever/vue-FlexPaperViewer​github.com
f17bf0adb02d3665b5fed938850b471b.png

qq:3179689033 相互学习

我把router.js 分成router.jsroutes.js 两个文件

routes.js 页面存放 公共路由 角色路由 设置用户角色路由权限

const asyncRoutes = [{ //这里按角色份路由权限
path: "/",
component: () => import('./views/index.vue'), //这里用动态加载路由 按需加载 这样没有权限的路由就不用加载
meta: {
requireAuth: true,
roles: ['page1'] // 区分权限 这是账号A
},
children: [{
path: "/",
component: () => import('./views/indexpage.vue'),
name:'首页',
meta: {
requireAuth: true,
}
},
{
path: "/page1",
component: () => import('./components/page1/page1.vue'),
name:'账号A 1页面',
meta: {
requireAuth: true,
}
},
]
},
{
path: "/",
component: () => import('./views/index.vue'),
meta: {
requireAuth: true,
roles: ['page2'] // 这里是账号B
},
children: [{
path: "/",
component: () => import('./views/indexpage.vue'),
name:'首页',
meta: {
requireAuth: true,
}
},
{
path: "/page2",
component: () => import('./components/page2/page2.vue'),
name:'账号B 1页面',
meta: {
requireAuth: true,
}
},
]
}
]

0773e3c24bfb6d05aeab309a5dab1143.png

router.js 页面 正常的添加路由 添加beforEach 路由导航 判断角色 根据角色 渲染不用页面的路由菜单

router.beforeEach((to, from, next) => {var user = sessionStorage.getItem('user') //这个判断token 我没有token 先用 user 代替var user = sessionStorage.getItem('user') // 获取账号权限 用户角色
if (to.path=='/login') { // 如果进的是登录页面 就直接进去
next() // 这一步非常重要 没有这一步就会在 登录页死循环
} else {
if (user) { //判断是否登录
if (user) { //判断是否需要权限
if (store.state.addRoutes.length <= 0) { //判断是否刷新了页面const newRoutes = asyncRoutes.filter(route => route.meta.roles.includes(user)) //从asyncRoutes 获取 当前账号的路由权限
// 提交给mutation asyncRoutes
router.addRoutes(newRoutes) // 动态的加载 newRoutes 路由权限
store.commit('setAddRoutes', newRoutes) // 吧路由权限存一份 方便判断用户是否刷新了页面
next(to.fullPath) // 用户刷新了页面 在跳回去
}
next()
} else {
next('/login')
}
} else {
next('/login') // 没有登录 返回登录页面
}
}
})

在展示路由的地方

c281d010bc1bcd4c5d94900f1cb2a25f.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值