rbac acl 页面+接口权限控制
beforeEach 钩子函数(实现路由白名单)页面的控制
先说这个beforeEach的钩子函数,它是一个全局的before钩子函数,(before each)意思是在 每次每一个路由改变的时候都得执行一遍。
router.beforeEach((to, from, next) => {
// alert(to.path);
let whiteList = ['/login', '/index']; // 定义白名单
// List.indexOf(to.path) 路径在list中的下标
// 判断是否在白名单中,如果在进入下个页面
if (whiteList.indexOf(to.path) >= 0) {
next()
} else {
// 在不在允许的menu中
let menu = JSON.parse(localStorage.getItem('resourcelist'));
let mlist = [];
// 遍历menu,将url取出来放入新的list中
for (let i = 0; i < menu.length; i++) {
mlist.push(menu[i]['url'])
}
// 是否在服务端配置的url中
if (mlist.indexOf(to.path) >= 0) {
next()
} else {
alert('您无权访问');
return