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');
});
相关推荐
程序员码歌5 小时前
短思考第261天,浪费时间的十个低效行为,看看你中了几个?
前端·ai编程
Swift社区6 小时前
React Navigation 生命周期完整心智模型
前端·react.js·前端框架
若梦plus6 小时前
从微信公众号&小程序的SDK剖析JSBridge
前端
用泥种荷花6 小时前
Python环境安装
前端
Light606 小时前
性能提升 60%:前端性能优化终极指南
前端·性能优化·图片压缩·渲染优化·按需拆包·边缘缓存·ai 自动化
Jimmy7 小时前
年终总结 - 2025 故事集
前端·后端·程序员
烛阴7 小时前
C# 正则表达式(2):Regex 基础语法与常用 API 全解析
前端·正则表达式·c#
roman_日积跬步-终至千里7 小时前
【人工智能导论】02-搜索-高级搜索策略探索篇:从约束满足到博弈搜索
java·前端·人工智能
GIS之路7 小时前
GIS 数据转换:使用 GDAL 将 TXT 转换为 Shp 数据
前端
多看书少吃饭7 小时前
从Vue到Nuxt.js
前端·javascript·vue.js