[javascript] Vue Router의 네비게이션 가드 사용법 자세히 알아보기
Vue Router는 네비게이션 가드라는 기능을 제공하여 라우터 네비게이션을 통제할 수 있게 합니다. 네비게이션 가드를 사용하면 사용자가 페이지를 이동할 때 특정 규칙을 적용할 수 있으며, 이를 통해 페이지 접근 권한을 조절하거나 페이지 이동 전에 추가 작업을 수행할 수 있습니다.
1. 전역 네비게이션 가드
Vue Router에서는 전역 네비게이션 가드를 등록하여 모든 라우팅 이벤트에 대해 적용할 수 있습니다. 이를 위해 beforeEach
메소드를 사용하여 전역으로 라우터 네비게이션을 가로챌 수 있습니다.
const router = new VueRouter({ ... });
router.beforeEach((to, from, next) => {
// 네비게이션 가드 로직 작성
if (/* 특정 조건 */) {
next(); // 다음 단계로 진행
} else {
next('/unauthorized'); // 다른 경로로 리다이렉트
}
});
2. 라우트별 네비게이션 가드
특정 라우트에만 네비게이션 가드를 적용하는 경우엔 라우트 설정 객체 내에서 beforeEnter
속성을 활용할 수 있습니다.
const router = new VueRouter({
routes: [
{
path: '/admin',
component: Admin,
beforeEnter: (to, from, next) => {
// 네비게이션 가드 로직 작성
if (/* 특정 조건 */) {
next(); // 다음 단계로 진행
} else {
next('/unauthorized'); // 다른 경로로 리다이렉트
}
}
}
]
});
3. 컴포넌트 내 가드
특정 컴포넌트에 대해 네비게이션 가드를 적용하려면, 해당 컴포넌트 내에서 beforeRouteEnter
, beforeRouteUpdate
, beforeRouteLeave
라이프사이클 훅을 사용할 수 있습니다.
export default {
beforeRouteEnter (to, from, next) {
// 네비게이션 가드 로직 작성
if (/* 특정 조건 */) {
next(); // 다음 단계로 진행
} else {
next('/unauthorized'); // 다른 경로로 리다이렉트
}
},
beforeRouteLeave (to, from, next) {
// ...
}
}
마무리
Vue Router의 네비게이션 가드를 통해 라우터 네비게이션에 대한 세밀한 제어를 할 수 있습니다. 각각의 방법은 다양한 상황에 맞는 유연한 네비게이션 제어를 가능하게 합니다.
더 자세한 내용은 Vue Router 공식 문서를 참고해 주세요.