帮我写一个 vue 路由控制权限的代码
时间: 2023-05-16 08:04:56 浏览: 97
当用户访问某个页面时,我们需要检查用户是否有权限访问该页面。我们可以在路由配置中添加 meta 字段,用于存储该页面需要的权限信息。然后在路由跳转前,通过路由守卫检查用户是否有权限访问该页面。
以下是一个简单的示例代码:
```javascript
// 路由配置
const routes = [
{
path: '/home',
component: Home,
meta: { requiresAuth: true } // 需要登录才能访问
},
{
path: '/admin',
component: Admin,
meta: { requiresAdmin: true } // 需要管理员权限才能访问
},
{
path: '/about',
component: About
}
]
// 路由守卫
router.beforeEach((to, from, next) => {
const requiresAuth = to.matched.some(record => record.meta.requiresAuth)
const requiresAdmin = to.matched.some(record => record.meta.requiresAdmin)
const currentUser = firebase.auth().currentUser
if (requiresAuth && !currentUser) {
next('/login') // 需要登录但未登录,跳转到登录页面
} else if (requiresAdmin && currentUser.role !== 'admin') {
next('/403') // 需要管理员权限但当前用户不是管理员,跳转到 403 页面
} else {
next() // 其它情况放行
}
})
```
在上面的代码中,我们使用了 Vue Router 和 Firebase 来实现路由控制权限。当用户访问需要登录或管理员权限的页面时,我们会检查用户是否已登录或是否为管理员,如果不满足条件则跳转到相应的页面。
阅读全文