全局路由守卫根据token判断登录状态进行拦截(简易版)

我们在写vue项目的时候,很多页面需要根据判断你是否登录,然后再进行添加购物车啊,收藏啊一系列的操作。。。这个时候使用路由守卫去判断是否有token值进行拦截就显得至关重要。。今天说的这个比较易理解,好使用。。
router文件中index.js 中模板模拟:

import Vue from "vue";
import VueRouter from "vue-router";
import Home from "../views/main/Home.vue";

Vue.use(VueRouter);

const routes = [{
    path: "/",
    redirect: "/home"
  },
  {
    path: "/home",
    name: "Home",
    component: Home,
    meta: {
      isShow: true
    }
  },
 
  //课程页面
  {
    path: "/about",
    name: "About",
    component: () =>
      import("../views/main/About.vue"),
    meta: {
      isShow: true
    }

  },
  {
    path: "/third",
    name: "Third",
    component: () =>
      import("../views/main/Third.vue"),
    meta: {
      isShow: true
    }
  },
  // 练习页面
  {
    path: "/practice",
    name: "Practice",
    component: () =>
      import("../views/main/priactice_detail/Practice.vue"),
    meta: {
      isShow: true
    }
  },
  {
    path: "/mine",
    name: "Mine",
    component: () =>
      import("../views/main/mine_page/Mine.vue"),
    meta: {
      isShow: true
    },

  },
  // 进入登录页面
  {
    path: "/login",
    name: "Login",
    component: () =>
      import("../views/main/login_page/Login.vue"),
    meta: {
      isShow: false
    }
  },
 
];

const router = new VueRouter({
  mode: "hash",
  base: process.env.BASE_URL,
  routes
});


router.beforeEach(function (to, from, next) {
  //判断是否存在token值,不存在就去登录页面去登录
  if (!localStorage.getItem("token2")) {
    if (to.path !== "/login") {
      return next("/login")
    }
  }
  //如果存在就执行下一步
  next()
})
export default router;

其实重要代码就这些:

router.beforeEach(function(to, from, next) {
    if (!localStorage.getItem("loginName")) {
        if (to.path !== '/login') {
            return next('/login')
        }
    }
    next()
})

有关vue路由 导航守卫的一些具体的详细解释:
可以参考这个网址:
https://www.jianshu.com/p/691379025334

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中,可以使用路由守卫进行路由的权限管理和用户登录状态判断。有三种常用的路由守卫全局前置守卫 (`beforeEach`)、路由独享守卫 (`beforeEnter`) 和组件内部守卫 (`beforeRouteEnter`)。 在`router.js`文件中,可以通过创建路由实例来使用全局守卫。在全局守卫中,可以使用`beforeEach`方法来进行登录拦截。首先判断本地是否存在`token`,如果不存在,则判断用户目标路由是否是登录页面,如果是,则放行;否则,重定向到登录页面。如果存在`token`,则继续进行下一个路由。 使用路由守卫能够方便地判断用户的登录状态,并对未登录用户进行限制。合理使用路由守卫也可以为后端进行路由权限管理提供方便,同时提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue3中使用路由守卫(简单易懂哦)](https://blog.csdn.net/m0_52040370/article/details/124581903)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue3:路由守卫全局守卫、路由独享守卫、组件内守卫)](https://blog.csdn.net/qq_40745143/article/details/123680687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值