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

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

    假设用户信息(包括isAdmin)存储在Vuex状态管理中或某个全局状态中。

  2. 创建路由守卫

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

步骤1:配置 Vue Router 路由

javascript 复制代码
// 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 中存储用户信息

javascript 复制代码
// 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:在应用启动时获取用户信息

javascript 复制代码
// 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');
});
相关推荐
yuanyxh2 小时前
Mac 软件推荐
前端·javascript·程序员
万少2 小时前
AtomCode开发微信小程序《谁去呀》 全流程
前端·javascript·后端
某人辛木3 小时前
Web自动化测试
前端·python·pycharm·pytest
Kagol3 小时前
Superpowers GSD gstack AgentSkills深度测评
前端·人工智能
excel4 小时前
JavaScript 字符串与模板字面量:从表象到本质理解
前端
京东云开发者5 小时前
当AI成为导演-如何用AI创作动漫短剧
前端
李白的天不白5 小时前
使用 SmartAdmin 进行前后端开发
java·前端
乘风gg5 小时前
🤡PUA AI Coding 工具 的 10 条终极语录
前端·ai编程·claude
学Linux的语莫5 小时前
Vue 3 入门教程
前端·javascript·vue.js
怕浪猫6 小时前
第一章、Chrome DevTools Protocol (CDP) 详解
前端·javascript·chrome