vue3项目,管控部分路由仅管理员可见

  1. 定义用户角色和路由配置

    假设用户信息(包括isAdmin)存储在Vuex状态管理中或某个全局状态中。
  2. 创建路由守卫

    使用 Vue Router 的全局前置守卫来检查用户的角色,并决定是否允许他们访问特定路由。

步骤1:配置 Vue Router 路由 

// router/index.js

import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import Admin from '../views/Admin.vue';
import store from '../store'; // 假设你使用 Vuex 来管理用户状态

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/admin',
    name: 'Admin',
    component: Admin,
    meta: { requiresAdmin: true }
  },
  // 其他路由
];

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
});

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAdmin)) {
    // 检查用户是否为管理员
    if (store.state.user.isAdmin) {
      next();
    } else {
      next({ name: 'Home' }); // 或者重定向到一个错误页面
    }
  } else {
    next(); // 确保总是调用 next() 方法
  }
});

export default router;

步骤2:在 Vuex 中存储用户信息

// store/index.js

import { createStore } from 'vuex';

export default createStore({
  state: {
    user: {
      isAdmin: false // 默认值,根据实际情况初始化
    }
  },
  mutations: {
    setUser(state, user) {
      state.user = user;
    }
  },
  actions: {
    // 定义一些 actions 来获取和设置用户信息
    fetchUser({ commit }) {
      // 假设从服务器获取用户信息
      const user = {
        isAdmin: true // 根据实际情况获取
      };
      commit('setUser', user);
    }
  },
  modules: {}
});

 步骤3:在应用启动时获取用户信息

// main.js

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';

const app = createApp(App);

app.use(store);
app.use(router);

// 在应用启动时获取用户信息
store.dispatch('fetchUser').then(() => {
  app.mount('#app');
});

相关推荐

  1. vue3项目部分管理员可见

    2024-07-17 16:48:02       19 阅读
  2. vue3

    2024-07-17 16:48:02       66 阅读
  3. [Vue3] 嵌套

    2024-07-17 16:48:02       39 阅读
  4. 补充 vue3用户管理权限(控制)

    2024-07-17 16:48:02       50 阅读
  5. vue3后台管理系统权限的实现

    2024-07-17 16:48:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 16:48:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 16:48:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 16:48:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 16:48:02       69 阅读

热门阅读

  1. 乡下人的悲歌书籍pdf下载

    2024-07-17 16:48:02       23 阅读
  2. ES6基本语法(二)——函数与数组

    2024-07-17 16:48:02       20 阅读
  3. Jupyter Notebook 一些常用的快捷键

    2024-07-17 16:48:02       19 阅读
  4. linux 修改hostname

    2024-07-17 16:48:02       23 阅读
  5. 【Oracle】Oracle语法之递归查询

    2024-07-17 16:48:02       19 阅读
  6. C++基础练习 - Chapter 3

    2024-07-17 16:48:02       17 阅读
  7. 如何成为一个厉害的人

    2024-07-17 16:48:02       21 阅读
  8. Web开发-LinuxGit基础6-本地-.gitignore

    2024-07-17 16:48:02       18 阅读