Vue检测token实现路由导航守卫(验证token,强制跳转)

在做后台管理系统的时候,为了防止用户通过地址路由访问而跳过了登录页面,所以要进行token的检查
此时我们就需要路由导航守卫

// 挂在路由导航守卫
router.beforeEach((to, from, next) => {
  // to 将要访问的路径
  // from 代表从哪个路径跳转而来
  // 访问登录页面 直接放行
  if (to.path === '/login') return next()
  const tokenStr = window.sessionStorage.getItem('token')
  // 没有token, 强制转到login页面
  if (!tokenStr) return next('/login')
  next()
})

如果检测到当前页面没有token,则强制跳转到 login页面
在发送登录请求的时候,如果登录成功,则要把token保存下来

// 将登陆成功之后的token,保存到客户端的 sessionStorage 中
 // token 只应在当前网站打开期间生效,所以将 token 保存在 sessionStorage
window.sessionStorage.setItem('token', res.data.token)
 // 通过编程式导航跳转到后台主页,路由地址是 /home
this.$router.push('/home')

在登陆成功后,我们可以看到token是被保存下来了的

在这里插入图片描述
如果删除token,则页面就会强制跳转到登录界面

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Vue实现Token验证路由守卫,可以通过以下步骤: 1. 安装 `vue-router` 插件(如果还没有安装),可以使用以下命令: ``` npm install vue-router --save ``` 2. 创建一个 `router` 实例,并定义路由守卫: ```javascript import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const router = new Router({ routes: [ // 定义路由 // ... ] }) // 定义路由守卫 router.beforeEach((to, from, next) => { const token = localStorage.getItem('token') if (to.meta.requireAuth) { // 判断该路由是否需要登录权限 if (token) { // 判断是否已经登录 next() } else { // 没有登录,跳转到登录页面 next({ path: '/login', query: { redirect: to.fullPath } // 将跳转路由path作为参数,登录成功后跳转到该路由 }) } } else { next() } }) export default router ``` 在上面的代码中,我们通过 `router.beforeEach` 定义了全局路由守卫,每次路由跳转前都会执行该守卫。在守卫中,我们首先获取保存在 localStorage 中的 token 值,然后判断路由是否需要登录权限,如果需要,则判断 token 是否存在,如果存在则继续跳转,否则跳转到登录页面。如果路由不需要登录权限,则直接跳转。 3. 在需要验证路由中添加 `meta` 属性: ```javascript const router = new Router({ routes: [ { path: '/home', component: Home, meta: { requireAuth: true } // 需要登录权限 }, // ... ] }) ``` 在上面的代码中,我们为 `/home` 路由添加了 `meta` 属性,并将其设置为需要登录权限。 4. 在登录成功后,保存 token 值: ```javascript localStorage.setItem('token', token) ``` 在上面的代码中,我们使用 `localStorage.setItem` 方法将 token 值保存在本地。 通过上面的步骤,我们就可以实现基于 Token路由守卫验证。每次路由跳转前,都会判断用户是否已经登录,如果没有登录,则跳转到登录页面。如果已经登录,则继续跳转到目标路由
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beiyux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值