성장과정(dev)/Frontend(feat. Vue, Next.js)

[Vue] 네비게이션 가드, url 접근 막기, router 설정

lowellSunny 2022. 4. 28. 22:30

ctrl c ctrl v from https://joshua1988.github.io/web-development/vuejs/vue-router-navigation-guards/

기억하기 위한 글

 

 

* 네비게이션 가드
> 뷰 라우터로 특정 url 에 접근할 떄 해당 url 에 접근을 막는 방법 

 

* 네이게이션 가드 종류
1. 전역가드 : 어플리케이션 전역에서 동작

router.beforeEach(function (to, from, next) {
  // to : 이동할 url
  // from : 현재 url
  // next : to에서 지정한 url로 이동하기 위해 꼭 호출해야 하는 함수
});


// from 에서 to url 로 이동하기 위해서는 next() 를 호출해줘야만한다. 호출하지 않으면 모든 라우팅이 대기상태가 됨.

 

 

2. 라우터가드 : 특정 url 에서만 동작

var router = new VueRouter({
  routes: [
    {
      path: '/login',
      component: Login,
      beforeEnter: function(to, from, next) {
        // 인증 값 검증 로직 추가
      }
    }
  ]
})

 

3. 컴포넌트가드 : 라우터 컴포넌트 안에 정의

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 컴포넌트를 접근할 수 있음
  }
}