vue-router中的beforeEach鉤子函數可以用于路由權限控制,以實現對某些路由只允許登錄用戶訪問的功能。
在路由配置中,需要使用meta配置項來標記某些路由需要登錄才能訪問:
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/login',
name: 'Login',
component: Login
},
{
path: '/user',
name: 'User',
component: User,
meta: {
requireAuth: true
}
}
]
在全局注冊路由前,需要定義一個全局的beforeEach鉤子函數用于權限驗證:
const router = new VueRouter({
mode: 'history',
routes
})
router.beforeEach((to, from, next) =>{
if (to.matched.some(record =>record.meta.requireAuth)) {
if (!store.state.isLoggedIn) {
next({
path: '/login',
query: { redirect: to.fullPath }
})
} else {
next()
}
} else {
next()
}
})
在beforeEach鉤子函數中,如果該路由需要登錄才能訪問,那么判斷store中的isLoggedIn狀態,如果未登錄則重定向到登錄頁面。
通過這種方式,在路由導航時,只要配置好對應的meta信息,在前端就可以實現簡單的路由權限控制。
上一篇html怎么保存代碼