vue 路由--- 导航守卫

╰+攻爆jí腚メ 2023-10-12 08:41 170阅读 0赞

个人理解:路由跳转是一个大的过程,就跟组件的创建一样,不是涉及组件的创建 — 销毁,那么路由的跳转也同样涉及到这个过程。(对接springmvc里面的拦截器,spring的aop,也就是代理模式)。

路由跳转前后对这个路由进行操作之类的。

目录

1.全局守卫

2.单个路由守卫


1.全局守卫

3个大钩子,beforeEach、beforeResolve(2.5+)、afterEach,这个中间效果湖绿不计,其实看名字就知道就是在路由跳转跳转前后分别触发的钩子函数(就是伴随某个阶段执行的函数)

  1. router.beforeEach((to, from, next) => {
  2. //to 将要访问的路径
  3. //from 代表从哪个路径跳转而来
  4. //next 是一个函数,表示放行
  5. // next() 放行 next('/login') 强制跳转
  6. })

看上述,看的出来,可以利用如果不满足全局设置条件,然后就重定向(强制跳转)。

卧槽,这个tm的就很简单了,我们之前不是给路由起了别名吗?name ,path属性,我们都能拿到。

案例:看下这个大致了解

  1. //挂载路由导航守卫,控制页面访问权限
  2. router.beforeEach((to, from, next) => {
  3. if (to.path === '/login') return next();
  4. //获取token
  5. const tokenStr = window.sessionStorage.getItem('token')
  6. if (!tokenStr) return next('/login')
  7. next()
  8. })

2.单个路由守卫

1.这接绑定在路由index.js文件内。

ae807e1aafde470f9d7ec0d53ae714c7.png

2.绑定在路由的.vue文件中。

  1. //通过路由规则,进入该组件时被调用
  2. 1. beforeRouteEnter(to,from,next) {
  3. if(toString.meta.isAuth){
  4. if(localStorage.getTime('school')==='qinghuadaxue'){
  5. next()
  6. }else{
  7. alert('学校名不对,无权限查看!')
  8. }
  9. } else{
  10. next()
  11. }
  12. },
  13. //通过路由规则,离开该组件时被调用
  14. 2. beforeRouteLeave(to,from,next) {
  15. next()
  16. }

发表评论

表情:
评论列表 (有 0 条评论,170人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue --- 导航守卫

    个人理解:路由跳转是一个大的过程,就跟组件的创建一样,不是涉及组件的创建 -- 销毁,那么路由的跳转也同样涉及到这个过程。(对接springmvc里面的拦截器,spring的a