vue路由权限配置-简易版

import router from ‘./router’ // 引入路由
import store from ‘./store’ // 引入状态管理
import { Message } from ‘element-ui’ // 引入ui框架
import NProgress from ‘nprogress’ // 进度条文件
import ‘nprogress/nprogress.css’ // 进度条样式文件
import { getToken } from ‘@/utils/auth’ // 取token
import getPageTitle from ‘@/utils/get-page-title’ // 获取页面名称

NProgress.configure({ showSpinner: false }) // 配置进度条
const whiteList = [’/login’] // 路由白名单
router.beforeEach(async(to, from, next) => {
// 开启进度条
NProgress.start()
// 页面的名称
document.title = getPageTitle(to.meta.title)
// 获取token
const hasToken = getToken()
// 判断是否有token
if (hasToken) {
if (to.path === ‘/login’) {
// 有token代表已经登录,然后又进login页面,给他跳转到首页
next({ path: ‘/’ })
// 关闭动画
NProgress.done()
} else {
// 有token跳转到其他页面,获取登录权限信息,可以根据这个权限信息来做侧边栏的控制
// 获取登录信息
const hasGetUserInfo = store.getters.name
if (hasGetUserInfo) {
// 有信息正常跳转
next()
} else {
try {
// 没有信息,执行方法获取登录信息
await store.dispatch(‘user/getInfo’)
// 进行正常跳转
next()
} catch (error) {
// 如果出现异常,删除令牌,进入登录页面重新登录
await store.dispatch(‘user/resetToken’)
Message.error(error || ‘系统错误’)
next(/login?redirect=${to.path})
// 关闭动画
NProgress.done()
}
}
}
} else {
// 没有token
if (whiteList.indexOf(to.path) !== -1) {
// 如果是白名单,那么正常跳转
next()
} else {
// 不是白名单,跳转到登录页面,携带即将跳转页面参数
next(/login?redirect=${to.path})
NProgress.done()
}
}
})

router.afterEach(() => {
// 离开每一个页面都停掉动画
NProgress.done()
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue项目中实现动态路由权限配置的思路如下: 1. 首先,与后台进行沟通,获取路由表的数据。可以与后台约定一个接口,后台将需要展示的路由信息返回给前端。 2. 在前端的路由配置文件中,引入Vuex,并将路由表数据存储在Vuex的state中。这样可以在全局范围内访问到路由表数据。 3. 在Vue的根实例中,通过router.beforeEach()方法进行路由守卫的配置。在每次路由切换前,判断用户是否有权限访问该路由。可以通过对比用户的权限信息和路由表中定义的权限要求来判断。 4. 如果用户有权限访问该路由,则继续进行路由跳转。如果没有权限,则进行相应的处理,比如跳转到一个没有权限的页面或者给出提示信息。 下面是一个示例的代码: 1. 在store/index.js文件中,定义一个router模块,用来存储路由表数据。 ```javascript import Vue from 'vue' import Vuex from 'vuex' import router from './router/index.js' Vue.use(Vuex) export default new Vuex.Store({ state: { // 存储路由表数据 routerTable: [] }, mutations: { // 更新路由表数据 updateRouterTable(state, routerTable) { state.routerTable = routerTable } }, actions: {}, modules: { router } }) ``` 2. 在登录成功后,将路由表数据保存到Vuex的state中。 3. 在main.js文件中,配置router.beforeEach()方法。 ```javascript router.beforeEach((to, from, next) => { // 获取当前用户的权限信息 const userPermissions = store.state.user.permissions // 判断用户是否有权限访问该路由 const hasPermission = userPermissions.includes(to.meta.permission) if (hasPermission) { // 如果有权限,继续路由跳转 next() } else { // 没有权限,进行相应的处理 next('/403') // 跳转到没有权限的页面 } }) ``` 需要注意的是,动态路由权限配置的具体实现方式会因项目而异。以上是一个基本的思路和示例,你可以根据自己的项目需求进行相应的调整和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值