[javascript] Vue Router의 인증 처리 방법들

Vue Router는 단일 페이지 애플리케이션 (SPA)을 구축하는 데 널리 사용되는 도구입니다. 이 글에서는 Vue Router를 사용하여 SPA에서의 사용자 인증 처리에 대해 알아보겠습니다.

1. 기본적인 라우터 보호

보안 상의 이유로 특정 라우트를 보호해야 할 때, 라우터 네비게이션 가드를 사용하여 해당 라우트로의 접근을 제어할 수 있습니다.

import router from './router'

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    if (!auth.loggedIn()) {
      next({
        path: '/login',
        query: { redirect: to.fullPath }
      })
    } else {
      next()
    }
  } else {
    next()
  }
})

2. 동적 라우트 보호

일부 라우트는 특정 사용자 권한을 요구할 수 있습니다. 이러한 경우 동적 라우트 매칭을 사용하여 라우트에 대한 접근 권한을 동적으로 관리할 수 있습니다.

const router = new VueRouter({
  routes: [
    {
      path: '/admin',
      component: Admin,
      meta: {
        requiresAuth: true,
        requiresAdmin: true
      }
    }
  ]
})

3. 인증된 사용자 리디렉션

인증된 사용자가 로그인 페이지나 회원가입 페이지에 접근할 때, 해당 사용자를 홈페이지로 리디렉션시켜주는 것이 보통의 요구사항입니다.

{
  path: '/login',
  beforeEnter: (to, from, next) => {
    if (auth.loggedIn()) {
      next('/')
    } else {
      next()
    }
  }
}

4. 다중 계층 레이아웃

다중 계층 레이아웃은 로그인한 사용자와 로그아웃한 사용자를 위한 서로 다른 레이아웃을 제공할 수 있습니다.

const router = new VueRouter({
  routes: [
    {
      path: '/',
      component: Home
    },
    {
      path: '/dashboard',
      component: Dashboard,
      meta: { requiresAuth: true }
    }
  ]
})

Vue Router를 사용하여 SPA에서의 인증 처리를 하는 방법들을 알아보았습니다. 사용자의 요구에 따라 적절한 방법을 선택하여 보안을 강화할 수 있습니다.

참고: Vue Router - Navigation Guards