permission.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import router from "./router"
  2. import { getToken } from "@/utils/auth"
  3. import { useUserStore } from "@/store/user.js"
  4. import { useSettingStore } from "@/store/settings.js"
  5. import { usePermissionStore } from "@/store/permission.js"
  6. import { dynamicRoutes } from "@/router/dynamicRoutes"
  7. const whiteList = ["/login", "/yh", "/ssoyh"]
  8. router.beforeEach((to, from, next) => {
  9. if (getToken()) {
  10. to.meta.title && useSettingStore().setTitle(to.meta.title)
  11. if (useUserStore().roles.length === 0) {
  12. useUserStore().RefreshInfo().then(res => {
  13. usePermissionStore().generateRoutes().then(accessRoutes => {
  14. accessRoutes.forEach(item => router.addRoute(item))
  15. router.addRoute({
  16. path: "/:pathMatch(.*)*",
  17. name: "notFound",
  18. redirect: "/notfound"
  19. })
  20. next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
  21. })
  22. })
  23. } else {
  24. next()
  25. }
  26. } else { // 登录
  27. // 白名单放行
  28. if (whiteList.indexOf(to.path) !== -1) {
  29. next()
  30. } else {
  31. next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
  32. }
  33. }
  34. })
  35. router.afterEach(() => {
  36. })
  37. router.onError((error) => {
  38. console.warn("路由错误", error.message)
  39. })