permission.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import router from "./router";
  2. import store from "./store";
  3. import { Message } from "element-ui";
  4. import NProgress from "nprogress";
  5. import "nprogress/nprogress.css";
  6. import { getToken } from "@/utils/auth";
  7. import { isRelogin } from "@/utils/request";
  8. NProgress.configure({ showSpinner: false });
  9. const whiteList = ["/login", "/auth-redirect", "/bind", "/register"];
  10. router.beforeEach((to, from, next) => {
  11. NProgress.start();
  12. if (getToken()) {
  13. to.meta.title && store.dispatch("settings/setTitle", to.meta.title);
  14. /* has token*/
  15. if (to.path === "/login") {
  16. next({ path: "/" });
  17. NProgress.done();
  18. } else {
  19. if(!store.state.user.name) {
  20. store
  21. .dispatch("GetInfo")
  22. .then(() => {
  23. next();
  24. })
  25. .catch((err) => {
  26. store.dispatch("LogOut").then(() => {
  27. Message.error(err);
  28. next({ path: "/" });
  29. });
  30. });
  31. } else {
  32. next();
  33. }
  34. }
  35. } else {
  36. // 没有token
  37. // if (whiteList.indexOf(to.path) !== -1) {
  38. // 在免登录白名单,直接进入
  39. next();
  40. // } else {
  41. // next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页
  42. // NProgress.done();
  43. // }
  44. }
  45. });
  46. router.afterEach(() => {
  47. NProgress.done();
  48. });