익명의 개발노트

[vue.js] Navigation Guard 본문

코딩일기/TIL

[vue.js] Navigation Guard

캡틴.JS 2019. 11. 17. 14:13
반응형

1. 네비게이션 가드 

   정의 : 뷰 라우터로 특정 URL에 접근할 때 해당 URL의 접근을 막는 방법을 말한다.

  어디다 사용?  고객 인증정보 없으면, 페이지 접근 못하게 하는 식으로 사용

2. 종류

  1) 전역가드 : beforeEach()

    전역가드는 라우터의 인스턴스를 참조하는 객체로 설정할 수 있으며, 모든 네이게이션의 생성된 순서에 따라 호출한다.

const router = new VueRouter({ 

}) 

router.beforeEach((to, from, next) => { 

})

router.beforeEach를 호출하면 모든 라우팅이 대기상태가 된다. 해당 url 로 라우팅하기 위해서는 next()를 호출해줘야한다. 

next 호출전까지는 대기 상태에서 머물기 때문에 화면전환이 이루어지지 않음.

참고자료 : https://joshua1988.github.io/web-development/vuejs/vue-router-navigation-guards/ 

  2) 라우터 가드 : beforeEnter()

    라우터 가드는 전체라우팅이 아닌 특정 라우팅에 대해 가드를 설정한다.  

//router.js

const requireAuth = () => (to, from, next) => {
	if (sessionStorage.getItem(process.env.VUE_APP_ACCESS_TOKEN)) {
	  return next();
	}
	next('/');
  };

export default new Router({
	mode: 'hash',
	base: process.env.BASE_URL,
	routes: [
  			{
   			 path: '/dashboard',
			 component: () => import('@/views/basePages/Index'),
   			 beforeEnter: requireAuth(),
  			},
            ]
 })           

  3) 컴포넌트 가드 : beforeRouteEnter(), beforeRouteUpdate(), beforeRouteLeave() 

const Login = {
  template: '<p>Login Component</p>',
  beforeRouteEnter (to, from, next) {
    // Login 컴포넌트가 화면에 표시되기 전에 수행될 로직
    // Login 컴포넌트는 아직 생성되지 않은 시점
  },
  beforeRouteUpdate (to, from, next) {
    // 화면에 표시된 컴포넌트가 변경될 때 수행될 로직
    // `this`로 Login 컴포넌트를 접근할 수 있음
  },
  beforeRouteLeave (to, from, next) {
    // Login 컴포넌트를 화면에 표시한 url 값이 변경되기 직전의 로직
    // `this`로 Login 컴포넌트를 접근할 수 있음
  }
}

   참고자료 : https://beomy.tistory.com/75

반응형
Comments