내비게이션 가드와 함께 사용하면 특히 유용한 기능이 있다.
→ 바로 '라우트 메타 필드'
어떤 라우트에도 라우트 구성에 메타(meta) 프로퍼티를 추가할 수 있다.
meta에는 객체 또는 그 외 다양한 값을 넣을 수 있다.
예를 들어 needsAuth를 추가하고 true로 설정할 수 있다. 이 부분은 원하는 대로 해라.
//main.js
{
name: 'teams',
path: '/teams',
meta: { needsAuth: true },
components: { default: TeamsList, footer: TeamsFooter },
// 생략
},
meta 프로퍼티가 유용한 건 바로 라우트 객체나 $route 객체가 있는 곳 모두에서 메타필드에 액세스할 수 있다.
컴포넌트 내부에서도 사용할 수 있고 라우트에 로드된 컴포넌트에 데이터를 전달할 수도 있고,
내비게이션 가드는 to와 from 객체에 액세스할 수 있기 때문에 내비게이션 가드에도 사용할 수 있다.
meta 프로퍼티를 추가해서 이 라우트에 인증이 필요하다고 표시할 수 있고
전역 beforeEach라우트에 가서 유저가 가려는 라우트의 메타 필드 needsAuth가 참(truthy)인지 if검사를 할 수 있다.
그러면 사용자의 인증 여부를 확인할 수 있다.
여기 코드를 사용해서 사용자의 인증 여부를 확인하고 인증된 경우에는 확인을 하고, 그렇지 않은 경우 거부하면 된다.
router.beforeEach(function (to, from, next) {
if (to.meta.needsAuth) {
console.log('Needs auth!');
next();
}
});
이렇게 하면 모든 라우트에 실행되는 전역 내비게이션 가드를 사용하면서도 개별 라우트에 첨부된 메타 데이터를 기반으로 다른 동작을 실행할 수 있다.
라우트에 첨부된 메타 데이터를 기반으로 다른 작업을 하게 해주므로 세련되게 전역 내비게이션 가드를 사용하는 방법이라고 할 수 있다.
항상 필요한 건 아니고 어려운 심화 개념이지만 특정 라우트가 일치할 때 컴포넌트 내 라우트 객체에 추가 데이터를 전달할 수 있다는 점이 유용하게 쓰일 수 있다.
** 출처: 모든 내용은 Udemy Vue-완벽가이드 강의를 기반으로 작성하였습니다.
'Vue.js' 카테고리의 다른 글
[Udemy Vue 완벽가이드 Section13] 190. 요약 (0) | 2023.10.17 |
---|---|
[Udemy Vue 완벽가이드 Section13] 189. 라우트 파일 정리하기 (2) | 2023.10.17 |
[Udemy Vue 완벽가이드 Section13] 187. 라우트 Leave 가드 (0) | 2023.10.17 |
[Udemy Vue 완벽가이드 Section13] 186. 'afterEach' 전역 가드 (1) | 2023.10.16 |
[Udemy Vue 완벽가이드 Section13] 185. 내비게이션 가드 자세히 알아보기 (0) | 2023.10.16 |