实现思路
在登录时通过后台得到一组数字字符串 例如:“0,1,2,3,4,5”数字越多说明权限越高。然后存入本地与vuex中 在一些页面中通过存入本地的信息判断是否有权限访问。 在路由拦截中,判断是否有权访问,如果没有访问权,就跳转页面到403页面
// 从后台得到登录者的position,有哪些权限
let position = '0,1'
// 存入本地与vuex中
localStorage.setItem('login_role',position)
this.thisPost(position)
// 定义授权的页面是否有权限进入
if (to.meta && to.meta.role) {
if (localStorage.getItem('login_role').includes(to.meta.role)) {
return next()
} else {
return next('/403')
}
}
data() {
return {
list:[
{
id:0,
path:"/",
icon:"home",
name:"主控台"
},{
id:1,
path:"/jiaoxue",
icon:"appstore",
name:"教学管理"
},{
id:2,
path:"/user",
icon:"mail",
name:"用户管理"
}
]
};
},
// 计算属性得到权限显示的导航栏,如果传入的是0,1就显示主控台与教学管理,用户管理不显示
computed: {
postList(){
return this.list.filter(r=>localStorage.getItem("login_role").includes(r.id) )
}
},