LoginSignup
17
20

More than 5 years have passed since last update.

vue-routerでログインしていない場合はログインページに戻す処理

Posted at

ログインしているかどうかはvuexを使ってisLoggedというstateに持っている。
ポイントは一度routerという変数にrouterオブジェクトを入れて、からrouter.beforeEachを使って各ルーティングの前にリダイレクト条件を追加するところです。

これはNG:frowning2:

export default new Router({
  routes: [
//
  ],
});

これが正解:relaxed:


import Vue from "vue";
import Router from "vue-router";
import Login from "@/views/login";
import Mypage from "@/views/mypage";
import store from '@/store/index';

Vue.use(Router);

const router = new Router({
  routes: [
    {
      path: "/",
      name: "top",
      component: Login,
      beforeEnter: (to, from, next) => {
        next('/login');
      }
    },
    {
      path: "/login",
      name: "login",
      component: Login
    },
    {
      path: "/mypage",
      name: "mypage",
      component: Mypage
    },
  ]
});

router.beforeEach((to, from, next) => {
  if (to.name === "top" ||to.name === "login") {
    if(store.state.auth.isLogged){
      next('/mypage');
    }else{
      next();
    }
  } else {
    if(store.state.auth.isLogged){
      next();
    }else{
      next('/');
    }
  }
});

export default router;
17
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
20