permission.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import router from './router'
  2. import store from './store'
  3. import { Message } from 'element-ui'
  4. import { getToken } from '@/utils/auth' // 验权
  5. const whiteList = ['/login', '/aikmt/redirect_uri'] // 不重定向白名单
  6. router.beforeEach((to, from, next) => {
  7. if (getToken()) { // 判断是否有token
  8. // debugger
  9. if (to.path === '/login') {
  10. next()
  11. } else {
  12. if (store.getters.roles.length === 0) {
  13. console.log('roles====0')
  14. debugger
  15. store.dispatch('GetInfo').then(res => { // 拉取用户信息
  16. console.log('roles====1')
  17. console.log(res)
  18. const roles = res.data.role // note: roles must be a array! such as: ['1']
  19. console.log('roles?', roles)
  20. store.dispatch('GenerateRoutes', { roles }).then(() => { // 根据roles权限生成可访问的路由表
  21. console.log('addrouters', store.getters.addRouters)
  22. console.log('roles====3')
  23. router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
  24. next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
  25. })
  26. }).catch(() => {
  27. store.dispatch('FedLogOut').then(() => {
  28. Message.error('验证失败,请重新登录')
  29. next({ path: '/login' })
  30. console.log('roles====5')
  31. })
  32. })
  33. } else {
  34. console.log('====6')
  35. next() // 当有用户权限的时候,说明所有可访问路由已生成 如访问没权限的全面会自动进入404页面
  36. }
  37. }
  38. } else {
  39. if (whiteList.indexOf(to.path) !== -1) {
  40. next()
  41. } else {
  42. next('/login')
  43. }
  44. }
  45. })