Vue_导航守卫,退出功能



我不用登录,我直接在url输入/home也可以跳转到我的home页面,这不符合我所要实现的功能,也不符合逻辑

一、导航守卫

导航守卫是由vue-router 提供的,主要用来通过跳转或取消的方式守卫导航

1.使用方法

我们可以使用在"router/index.js"中用 router.beforeEach 注册一个全局前置守卫:


// 挂载路由导航守卫
router.beforeEach((to, from, next) => {
// to 是将要访问的路径
// from 代表从哪个路径跳转过来
// next 是一个函数,表示放行 next()放行 next('/login')强制跳转
  if (to.path === '/login') return next()
  // 获取token
  const tokenStr = window.sessionStorage.getItem('token')
  // 如果tokenStr字符串不存在 则强制跳转到login页面
  if (!tokenStr) return next('/login')
  next()
})

2.实现效果

请添加图片描述
可以看到他已经不能通过url直接链接到home地址进行跳转,当我们强制使用url进行跳转时他会给我们跳回login界面

二、退出功能的实现

要实现退出功能其实很简单,我们只需要在”home“界面中添加一个清除本地token的按钮就行了

<template>
  <div id="app">
    <!-- 退出按钮 -->
    <el-button type="info" @click="logout">退出</el-button>
  </div>
</template>

<script>
export default {
  methods: {
    logout () {
      // 要实现退出功能只需要做到清除本地的token就行了
      window.sessionStorage.clear()
      this.$router.push('/login')
    }
  }
}
</script>

<style lang='less' scop>
</style>

Vue.js 3中,退出登录并清空路由可以通过以下步骤实现: 1. 首先,在你的应用程序中创建一个用于管理用户登录状态的状态管理模块(如Vuex)。在该模块中,定义一个用于存储用户登录状态的变量,例如`isLoggedIn`。 2. 当用户点击退出登录按钮时,触发一个方法来更新`isLoggedIn`的值为`false`,表示用户已退出登录。 3. 在你的路由配置文件中,使用导航守卫(Navigation Guards)来检查用户的登录状态。在导航守卫中,判断`isLoggedIn`的值,如果为`false`,则将用户重定向到登录页面或其他需要登录才能访问的页面。 4. 当用户退出登录时,你可以使用Vue Router提供的方法来清空路由历史记录。可以通过调用`router.replace()`方法来将当前路由替换为登录页面的路由,这样用户无法通过浏览器的后退按钮返回到之前的页面。 下面是一个示例代码: ```javascript // 在状态管理模块中定义isLoggedIn变量和更新方法 const state = { isLoggedIn: false }; const mutations = { setLoggedIn(state, value) { state.isLoggedIn = value; } }; // 在路由配置文件中使用导航守卫 router.beforeEach((to, from, next) => { if (to.meta.requiresAuth && !store.state.isLoggedIn) { next('/login'); // 重定向到登录页面 } else { next(); } }); // 在退出登录的方法中更新isLoggedIn的值,并清空路由历史记录 methods: { logout() { this.$store.commit('setLoggedIn', false); this.$router.replace('/login'); } } ``` 这样,当用户退出登录时,会将`isLoggedIn`的值更新为`false`,并且通过`router.replace()`方法将当前路由替换为登录页面的路由,从而清空路由历史记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是发财不是旺财

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

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

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

打赏作者

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

抵扣说明:

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

余额充值