路由权限配置(页面访问控制)

2019-10-22  本文已影响0人  Biao_349d

当我们不想给某些没有权限的用户访问某些页面的时候, 我们可以让他访问的时候,跳转到别的页面去。

/*
 * @Description: In User Settings Edit
 * @Author: your name
 * @Date: 2019-10-17 18:49:59
 * @LastEditTime: 2019-10-22 19:15:43
 * @LastEditors: Please set LastEditors
 */

import Cookies from 'js-cookie'
import routes from '@_src/router/index.js'
import Store from '@_src/store/store.js'
// 不重定向白名单
const whiteList = ['/login']
export const beforeEach = (to, from, next) => {
  const isLogin = Cookies.get('Token')
  // 获取设置了权限的路由表;
  const permissionRouters = routes.filter(item => {
    // 设置了权限
    if (
      item.meta &&
      item.meta.privilege &&
      Array.isArray(item.meta.privilege) &&
      item.meta.privilege.length
    ) {
      return true
    }
    return false
  })
  if (whiteList.indexOf(to.path) !== -1) {
    next()
  } else if (!isLogin) {
    next({
      path: '/login'
    })
  } else if (
    // 如果前往的路由是权限表里面的路由
    // !判断是否有用户信息(是否登录了)
    // !判断前往的路由是否有当前用户权限
    permissionRouters.find(item => to.name === item.name) &&
    !(
      Store.state.login.userInfo &&
      to.meta.privilege.indexOf(Store.state.login.userInfo.role) !== -1
    )
  ) {
    next({
      path: '/login'
    })
  } else {
    next()
  }
}

上一篇下一篇

猜你喜欢

热点阅读