vue中如何用路由守卫让没有权限的人无法访问路径带/admin的路由
时间: 2023-05-26 18:06:04 浏览: 375
自定义指令和路由守卫进行权限拦截, vue后台管理系统
5星 · 资源好评率100%
在vue中,可以使用路由守卫来限制用户访问带有特定名称的路由。下面是一个示例:
```
import router from './router'
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAdmin)) {
// 判断用户是否有权限访问
const isAdmin = checkAdmin()
if (!isAdmin) {
next({
path: '/',
query: { redirect: to.fullPath }
})
} else {
next()
}
} else {
next() // 确保一定要调用 next()
}
})
function checkAdmin () {
// 判断用户是否有权限
}
```
在上面的示例中,使用 `beforeEach` 路由守卫来拦截所有的导航,并且检查将要访问的路由是否需要 `requiresAdmin` 权限。如果需要,则检查当前用户是否具有管理员权限,如果没有,将用户重定向到主页面,否则允许访问该路由。如果不需要权限,则直接允许访问。
需要注意的是,需要定义路由元对象的 `meta` 字段,并设置 `requiresAdmin: true` 才能使用该守卫。可以在路由定义中添加 `meta` 如下:
```
const router = new VueRouter({
routes: [
{
path: '/admin',
component: Admin,
meta: {
requiresAdmin: true
}
}
]
})
```
这样,当用户试图访问 "/admin" 路由时,路由守卫将会拦截并检查用户是否具有管理员权限。如果没有,用户将被重新定向到主页面。
阅读全文