npm install vue-router vuex
import { createRouter, createWebHistory } from 'vue-router';
const routes = [
// 公共页面,无需验证
{ path: '/login', component: Login },
{ path: '/register', component: Register },
// 需要权限验证的页面
{
path: '/dashboard',
component: Dashboard,
meta: { requiresAuth: true } // 标记需要身份验证
},
// 其他路由配置...
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
import { createStore } from 'vuex';
const store = createStore({
state: {
user: null // 用户信息
},
mutations: {
setUser(state, user) {
state.user = user;
}
},
actions: {
login({ commit }, user) {
// 在这里进行登录验证,验证通过后将用户信息保存到 state 中
commit('setUser', user);
},
logout({ commit }) {
// 在这里执行登出操作,清除用户信息
commit('setUser', null);
}
}
});
export default store;
import { createApp } from 'vue';
import App from './App.vue';
import router from './router.js';
import store from './store.js';
// 路由前置守卫
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !store.state.user) {
// 需要验证且用户未登录,跳转到登录页
next('/login');
} else {
next(); // 继续路由跳转
}
});
createApp(App)
.use(router)
.use(store)
.mount('#app');
<template>
<div>
<h1>Welcome, {{ $store.state.user.name }}</h1>
<p>This is a protected dashboard page.</p>
<!-- 页面内容 -->
</div>
</template>