路由守卫(简易版)

news/2024/7/10 2:30:07 标签: 前端, javascript, 网络, vue

目录

(一)什么是路由守卫

(二)路由守卫的分类

(1)全局守卫

(2)独享守卫

(3)组件内守卫


(一)什么是路由守卫

路由守卫:路由在跳转前、后过程中的一些钩子函数,这些函数可以让你操作一些其他的事,在后台管理中设置权限时经常看到,在实现路由跳转前校验是否有权限,有权限就可以通过,反之就会被执行其他操作。

(二)路由守卫的分类

(1)全局守卫

beforeEach和afterEach,其中有to,from,next参数

对于beforeEach传三个参数,afterEach传to,from两个参数即可

to:为即将进入的目标对象,可以用to.path或者to.name调用路由对象中的属性

from:也为从哪里来,当前正要离开的路由

next:其为一个方法,表示放行有权限。

路由守卫写在router下的index.js中 ,为了书写便利,将自己需要的数据写在meta里面

{

                   name:'xinwen',

                   path:'news',

                    component:News,

                    meta:{isAuth:true,title:'新闻'}//想让谁有权限就写在谁的路由配置里面

  },

1、前置全局路由守卫

router.beforeEach((to, from, next) => {

    if(to.meta.isAuth){

        if(localStorage.getItem('school')==='hkd2'){

            next()

        }

        else{

            alert('学校名不对,无权限查看')

        }

    }else{

        next()

    }

})

2、后置路由守卫

路由跳转之后执行,可以用作跳转路由后更改网页名

// (全局后置路由守卫)切换后

router.afterEach((to,from)=>{

    document.title=to.meta.title||"小开心系统"

})

(2)独享守卫

注意 :独享路由守卫只有前置没有后置,用于向单独的给某个路由设置权限,在配置路由的时候配置。

{

                    name:'xinwen',

                    path:'news',

                    component:News,

                    meta:{isAuth:true,title:'新闻'},

                    beforeEnter(to,from,next){

                        if(to.meta.isAuth){

                            if(localStorage.getItem('school')==='hkd'){

                                next()

                            }

                            else{

                                alert('学校名不对,无权限查看')

                            }

                        }else{

                            next()

                        }

                    }

                },

(3)组件内守卫

写在组件(.vue)里面

beforeRouteEnter:通过路由规则,进入该组件时被调用

beforeRouteLeave:通过路由规则,进入该组件时被调用

export default {

        name:'About',

        beforeRouteEnter(to,from,next){

            console.log('about---beforeRouteEnter',to,from)

            if(to.meta.isAuth){

                    if(localStorage.getItem('school')==='hkd'){

                        next()

                    }

                    else{

                        alert('学校名不对,无权限查看')

                    }

                }else{

                    next()

                }

        },

        beforeRouteLeave(to,from,next){

            console.log('about---beforeRouteLeave',to,from)

            next()

        }

    }


http://www.niftyadmin.cn/n/253904.html

相关文章

算法设计与智能计算 || 专题七: 主成分分析的统计学视角

主成分分析的统计学视角 文章目录 主成分分析的统计学视角PCA 的统计学视角1. 寻找第一个主成分2. 获取第二个主成分3. 非零均值随机变量的主元4. 零均值随机变量的样本主元5. PCA 降维案例 主成分分析是将高维空间中的数据集拟合成一个低维子空间的方法,到目前为止…

dB 、dBSPL、dBFS、dBTP

本文整理自:https://corychu.medium.com/%E9%8C%84%E9%9F%B3%E7%AD%86%E8%A8%98-%E6%95%B8%E4%BD%8D%E9%9F%B3%E9%87%8F%E6%A8%99%E6%BA%96-dbfs-dbtp-lufs-c47ca4646b7f 概述:dBFS(相对于满刻度的分贝)是数字系统中振幅水平的测…

【工作总结】后端开发人员的坏习惯

文章目录 前言一、不遵循项目规范二、用复杂SQL语句来解决问题三、缺少全局把控思维,只关注某一块业务四、函数复杂冗长,逻辑混乱五、缺乏主动思考,拿来主义六、核心业务逻辑,缺少相关日志和注释七、修改代码,缺少必要测试八、需求没理清&…

AI即将夺走程序员的工作?实操验证

随着ChatGPT的普及,许多媒体开始报道“AI即将夺走程序员的工作”、“AI来了!各大长都开始大幅度裁员”,这让一些初级码农感到担忧,而一些高级程序员则表示不屑一顾。这到底是不是“狼来了”。今天,我们将进行实际测试来…

qt判断键盘是否按下shift或Ctrl+其他键(附带Qt::Key的说明表)

下方代码是判断是否按下Shift键→键的: void VideoPlayer::keyPressEvent(QKeyEvent *event) {if(event->modifiers() Qt::ShiftModifier && event->key() Qt::Key_Right){//Shift→//TODO:} } Qt::Key_Escape0x01000000Esc键Qt::Key_Tab0x010000…

Swift之深入解析不透明类型

一、不透明类型解决的问题​ 具有不透明返回类型的函数或方法会隐藏返回值的类型信息,函数不再提供具体的类型作为返回类型,而是根据它支持的协议来描述返回值。在处理模块和调用代码之间的关系时,隐藏类型信息非常有用,因为返回…

Hive支持Json格式

1、下载hive-json-serde相关包 下载json-serde-1.3.8-jar-with-dependencies.jar、json-udf-1.3.8-jar-with-dependencies.jar,将其放到mapreduce、spark对应的lib目录下,如下: /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/lib/下载地…

【软件测试面试】全网最全,自动化测试面试题总结大全(付答案)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 面试题1&#xff…