Vue_shop学习17:登录组件 登录成功后的行为(当token没有了不能看到页面) 路由守卫

有权限的页面(即除去登录页面)带有token

使用路由守卫(没有权限的直接跳转到登录页面)


使用全局路由守卫,使用beforeEach 接收三个参数起点from起点 to终点

// 挂载路由守卫
// from路径起点 to路径终点 next是一个韩式表示放行 next()直接放行 next('/login')表示强制跳转
router.beforeEach((to, from, next) => {
  if (to.path === '/login') return next() // 如果用户访问登录页 就直接放行
  // 获取sessionStorage上的token
  const tokenStr = window.sessionStorage.getItem('token')
  if (!tokenStr) return next('/login') // 不存在token
  next()// 存在直接放行
})

 在router 的index.js

import Vue from 'vue'
import VueRouter from 'vue-router'
// 导入路由
import Login from '../components/login.vue'
// 引入组件
import home from '../components/home.vue'
Vue.use(VueRouter)

const routes = [
  { // 定义路由规则
    path: '/login',
    component: Login
  },
  { // 路由重定向
    path: '/',
    redirect: '/login'
  },
  {
    path: '/home',
    component: home
  }
]

const router = new VueRouter({
  routes
})
// 挂载路由守卫
// from路径起点 to路径终点 next是一个韩式表示放行 next()直接放行 next('/login')表示强制跳转
router.beforeEach((to, from, next) => {
  if (to.path === '/login') return next() // 如果用户访问登录页 就直接放行
  // 获取sessionStorage上的token
  const tokenStr = window.sessionStorage.getItem('token')
  if (!tokenStr) return next('/login') // 不存在token
  next()// 存在直接放行
})
export default router

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值