Vue Router 路由导航守卫控制访问权限

Vue Router 路由导航守卫控制访问权限

如果用户没有登录,但是直接通过URL访问特定页面,需要重新导航到登录页面。

import VueRouter from 'vue-router'

import Login from "../components/Login"
import Home from "../components/Home"


Vue.use(VueRouter)

const routes = [

  {path:"/",redirect:"/Login"},
  {path:"/login",component:Login},
  {path:"/home",component:Home},
]

const router = new VueRouter({
  routes
})
//挂载路由导航守卫

router.beforeEach((to,from,next)=>{
  //to:将要访问的路径
  //from:代表从哪个路径跳转而来
  //next:是一个函数代表放行
  //next() 放行  next('/login') 强制跳转
  if(to.path ==='/login'){
    return  next()
  }else {
    //获取token
     const tokenStr=window.sessionStorage.getItem('token');
     if(!tokenStr){
        return next('/login');
     }else {
       next()
     }
  }

})

export default router

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Router 提供了一套强大的导航守卫(Guard)系统,这些守卫可以在由变化之前或之后执行自定义操作,允许开发者拦截、验证、修改或重定向由过程。守卫主要分为以下几种类型: 1. **全局守卫** (Global Guards): - **beforeEach**: 在每次导航尝试之前被调用,可以阻止导航、改变目标URL或者提供一些默认参数。 - ** afterEach**: 在每次导航完成后被调用,无论是否发生导航失败。 2. **由级守卫** (Route Guards): - **beforeEnter**: 只在进入特定由时触发,用于验证或处理进入该由的权限或状态。 - **enter**: 类似于beforeEnter,但它是异步的,因此可以用它来做一些需要时间的操作,如数据请求。 - **afterEnter**: 在进入由并完成渲染后执行。 - **beforeLeave**: 当离开当前由时触发,可以用来确认离开操作。 - **leave**: 异步的离开守卫,类似`afterEnter`。 3. **导航失败守卫** (Navigation Failure Guards): - **catch**: 当导航失败(例如,未找到匹配的由)时触发。 你可以使用这些守卫来实现各种功能,比如身份验证、数据加载、错误处理等。为了更好地利用它们,你需要在Vue实例的`router.options`中配置守卫,或者在每个具体的由对象上设置。例如: ```javascript // 全局守卫示例 router.beforeEach((to, from, next) => { // 检查用户是否已登录 if (!isAuthenticated()) { next('/login'); } else { next(); } }); // 由级守卫示例 const router = new VueRouter({ routes: [ { path: '/private', component: PrivateComponent, beforeEnter: authenticateUser } ] }); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值