permission.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import router from "./index"
  2. import store from "../store/index"
  3. import NProgress from 'nprogress'
  4. import 'nprogress/nprogress.css'
  5. NProgress.configure({
  6. easing: 'ease', // 动画方式
  7. speed: 500, // 递增进度条的速度
  8. showSpinner: false, // 是否显示加载ico
  9. trickleSpeed: 200, // 自动递增间隔
  10. minimum: 0.3 // 初始化时的最小百分比
  11. })
  12. router.beforeEach((to, from, next) => {
  13. NProgress.start();
  14. NProgress.inc();
  15. if (!store.state.user.token) {
  16. //未登录 页面是否需要登录
  17. if (to.matched.length > 0 && !to.matched.some(record => record.meta.requiresAuth)) {
  18. next();
  19. } else {
  20. next({
  21. path: "/login"
  22. })
  23. }
  24. } else {
  25. // 用户已经登录 路由的访问权限
  26. if (!store.state.permission.permissionList) {
  27. store.dispatch("permission/FETCH_PERMISSION").then(() => {
  28. next({
  29. path: to.path
  30. })
  31. })
  32. } else {
  33. // store存在权限
  34. if (to.path !== "/login") {
  35. next();
  36. } else {
  37. next(from.fullPath)
  38. }
  39. }
  40. }
  41. })
  42. router.afterEach(() => {
  43. // 在即将进入新的页面组件前,关闭掉进度条
  44. NProgress.done()
  45. })