vue中全局前置守卫beforeEach使用

router.beforeEach((to, from, next) => {
  // to 将要跳转到的路由,
  // from 从哪个路由跳转过来的,
  //next() 不调用此函数将无法正常跳转
})

beforeEach全局前置钩子相当于最外层的保安,来为我们做用户登陆验证保驾护航

router下index.js文件

router.beforeEach(async (to, from, next) => {
 
  const token = localStorage.getItem('token') // 拿到保存在浏览器后端发送来的token **令牌 (通行证)**
  const flag = !!token  // 将token隐试的转换成Boolean值
  const data = await userInfo()  // 这是与后端定义好的 对用户的二次验证 诺返回error === 400 表示你造假登陆
  		// 判断你需要去的路由是否需要登陆验证
  if (to.matched.some((item) => { return item.meta.login })) { 
    if (flag) {
      //

      if (data.error === 400) {
        next('/login') //不合法,重新登陆 并且 强制跳转到登陆注册页面
        return;
      }
      // 到了这里肯定是合法了 不然会被 上边if return 结束下面代码的继续执行
      if (to.name == 'login') {
      	// 如果你合法登陆了但还要去登陆页注册页面 那强制让他去首页
        next('/home')
      } else {
      // 只要你不去 登陆 注册页面想去哪去哪
        next()
      }
      return
    }

    if (!flag && to.name === 'login') {
    // 如果你没token 想去 登陆注册 那可以去吧
      next()
      return
    }
    if (!flag && to.name !== 'login') {
    // 你没登陆还不去注册还想去只能登陆才能看的页面 那想的美强制跳到根页
      next('/')
    }
  } else {
  // 只要你不去需要登陆才能去的页面 想去哪去哪
    next()
    return
  }
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值