您的当前位置:首页正文

系统权限拦截

2024-12-08 来源:个人技术集锦
// 权限校验
// Vue Router中的前置钩子函数 beforeEach(to,from,next)
// 当进行路由跳转前,进行判断,是否已经登陆过,登录过则允许访问页面,否则回到登录页

import router from './index';
import { getUserInfo } from '@/api/login';
router.beforeEach((to, from, next) => {
  // 获取token
  // 1.没有token只可以进入登陆页面,进入其他页面不允许
  // 2.有token,是否有用户信息
  //  2.1有用户信息,所有页面都可以进入
  // 2.2 没有用户信息,通过token获取用户信息,有则可以进入所有页面,没有则返回登录页进行登录
  const token = localStorage.getItem('mxg-msm-token');
  if (!token) {
    if (to.path == '/login') {
      next();
    } else {
      next({ path: '/login' });
    }
  } else {
    const user = localStorage.getItem('mxg-msm-user');
    if (user) {
      next();
    } else {
      getUserInfo(token).then((res) => {
        const user1 = res.data;
        if (user1.flag) {
          next();
          localStorage.setItem('mxg-msm-user', JSON.stringify(user1.data));
        } else {
          next({ path: '/login' });
        }
      });
    }
  }
});

main.js引入

import './router/permission';

显示全文