//beforeEach,beforeResolve,afterEach合称路由守卫
router.beforeEach(async (to, from, next) => {
NProgress.start();
document.title = getPageTitle(to.meta.title);
const hasRoles =
store.getters.roles && store.getters.roles.length > 0;
console.log("\n是否需要登录:" + configParam.loginSwitch);
if (configParam.loginSwitch) {
console.log("\n目标网页是否在白名单之中:" + (whiteList.indexOf(to.path) !== -1));
if (whiteList.indexOf(to.path) !== -1) {
next();
NProgress.done();
} else {
const hasToken = getToken();
console.log(
"\n判断Token是否存在,即用户买了通行证?" +
(hasToken ? true : false)
);
console.log("\n" + hasToken ? "token值为" + hasToken : "");
if (hasToken) {
console.log("\n是否需要验证用户权限:" + configParam.rolesVerifySwitch);
if (configParam.rolesVerifySwitch) {
if (hasRoles) {
console.log("存在用户权限");
next();
NProgress.done();
} else {
console.log("不存在用户权限,重新请求用户权限");
try {
const {
roles
} = await store.dispatch("user/getInfo");
const accessRoutes = await store.dispatch(
"permission/generateRoutes",
roles
);
router.addRoutes(accessRoutes);
next({
...to,
replace: true
});
NProgress.done();
} catch (error) {
// remove token and go to login page to re-login
await store.dispatch("user/resetToken");
Message.error(error || "Has Error");
next(`/login?redirect=${to.path}`);
NProgress.done();
}
}
} else {
console.log("\n不需要验证用户权限,直接给与最高权限admin");
if (hasRoles) {
console.log("存在最高用户权限");
next();
NProgress.done();
} else {
const {
roles
} = await store.dispatch("user/getInfo", {tyep:"highest"});
const accessRoutes = await store.dispatch('permission/generateRoutes', roles)
router.addRoutes(accessRoutes)
next({
...to,
replace: true
});
NProgress.done();
}
}
} else {
next(`/login?redirect=${to.path}`);
NProgress.done();
}
}
} else {
console.log("\n不需要登录,没有任何限制,直接给与最高权限admin");
if (hasRoles) {
console.log("存在最高用户权限");
next();
NProgress.done();
}else{
const {
roles
} = await store.dispatch("user/getInfo", {type:"highest"});
const accessRoutes = await store.dispatch('permission/generateRoutes', roles)
router.addRoutes(accessRoutes)
next({
...to,
replace: true
});
NProgress.done();
}
}
});
10-21
401
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-21
213
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-08
384
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-10
411
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)