vue项目的权限控制管理

import cookies from 'js-cookie'
import store from './store'
router.beforeEach(async(to, from, next) => {
if (cookies.get('sessionId')) {
if (to.path === '/login') {
next({ path: '/' }) //有token代表已经登录,那就直接进首页
} else {
// 有用户身份后任何跳转都可以
if (store.state.user.userInfo) {
next()
} else {
// 这里加权限校验(登录后要获取身份信息)
const resData = await store.dispatch('user/getInfo') //获取用户身份的接口信息
const isAdmin = ['ADMIN_USER'].includes(resData.userInfo)
store.commit('user/setUserInfo', resData.userInfo)//用户身份存到仓库
// asyncRoutes为特殊权限的路由
const accessRoutes = isAdmin ? asyncRoutes : []
for (let route of accessRoutes) {
// 添加name为home的路由的chiildren 里
router.addRoutes('home', route)
}
next({...to, replace: true})
}
}
} else {
// 防止无线循环
if (to.path === 'Login') {
next() //就是想去登录页,那就继续
} else {
next({
path: '/login' //在网址上想跳到其他的路由,则让其先登录
})
}
}
})

posted @   小白张先生  阅读(241)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示