vue路由权限
时间: 2023-06-29 09:13:03 浏览: 86
在 Vue 中,我们可以使用路由守卫(Route Guards)来控制路由访问权限。路由守卫是 Vue Router 提供的一种机制,可以在路由跳转前、跳转后、或者跳转取消时进行拦截和处理。
以下是一个简单的示例,演示如何使用路由守卫实现路由访问权限控制:
```javascript
// 定义路由
const routes = [
{ path: '/', component: Home },
{ path: '/login', component: Login },
{ path: '/dashboard', component: Dashboard, meta: { requiresAuth: true } }
];
// 创建路由实例
const router = new VueRouter({ routes });
// 添加全局前置路由守卫
router.beforeEach((to, from, next) => {
// 判断目标路由是否需要验证登录状态
if (to.matched.some(record => record.meta.requiresAuth)) {
// 判断用户是否已登录
if (!auth.loggedIn()) {
// 未登录,跳转到登录页面
next({ path: '/login', query: { redirect: to.fullPath } });
} else {
// 已登录,继续跳转
next();
}
} else {
// 目标路由无需验证,继续跳转
next();
}
});
```
在上面的示例中,我们定义了三个路由:首页、登录页面和仪表盘页面。其中,仪表盘页面需要验证用户是否已登录才能访问,因此我们在路由定义中添加了一个 meta 属性来标记该路由需要登录验证。
然后,我们在全局前置路由守卫中添加了一个判断逻辑,用来判断目标路由是否需要登录验证。如果需要验证,再判断用户是否已登录。如果未登录,则跳转到登录页面,并在登录页面中添加一个 redirect 参数,用来标记登录成功后需要跳转的目标页面。如果已登录,则继续跳转到目标页面。如果目标路由不需要验证,则直接继续跳转到目标页面。
需要注意的是,auth.loggedIn() 是一个自定义的函数,用来判断用户是否已登录。在实际应用中,我们需要根据具体的业务逻辑来实现该函数。
阅读全文