码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Vue中的路由守卫


    目录

    1.全局前置路由守卫

    问题:如果要对很多路由切换时都需要做出判断,为了判断语句不显得代码很繁琐,应该怎么做?

    2.全局后置路由守卫

    3.独享路由守卫

    4.组件内路由守卫


    路由守卫:保护路由的安全(需要某种权限)

    一般情况下,路由组件点击就可以跳转,但是现在有需求是,在某种条件达成时,路由组件才能进行跳转。

    1.全局前置路由守卫

    全局前置路由守卫: 初始化的时候被调用,每次  路由切换之前  被调用。

    1. //全局路由守卫----初始化的时候被调用,每次路由切换之前被调用
    2. router.beforeEach((to, from, next) => {
    3. if (to.name == 'Message' || to.name == 'News') {
    4. if (localStorage.getItem('school') === 'skyblue2') {
    5. next()
    6. }else{
    7. alert('localStorage值不对');
    8. }
    9. }else{
    10. next()
    11. }
    12. })

    参数说明:

            1. to: 要去到的路由

            2.from:从哪个路由去

            3.next :允许去否    允许就 next()

     

     分析:在路由器里面配置路由规则时,一定要写name属性,方便路由守卫使用。

    问题:如果要对很多路由切换时都需要做出判断,为了判断语句不显得代码很繁琐,应该怎么做?

     if判断那里就显得很拥挤,所以我们可以在 路由配置项里面,设置一个值,来判断该路由是否需要鉴权。 

    可以在路由配置项的meta(路由元信息)里面,设置我们自定义的一些信息

     

     

     

     授权News路由可以通过。

    2.全局后置路由守卫

    全局后置路由守卫---初始化的时候被调用,每次路由切换之后被调用。

    1. //全局后置路由守卫----初始化时执行,每次路由切换后执行
    2. router.afterEach((to,from)=>{
    3. //to:去到哪个路由组件 from:从哪个路由组件去
    4. if(to.meta.title){
    5. document.title = to.meta.title; //修改网页的title
    6. }else{
    7. document.title = 'vue_project'
    8. }
    9. })

    注意点:要用的meta中title的话,需要提前在配置路由时,配置好meta。后置路由守卫可以用来在切换到某个路由组件后,修改对应页面的标题。

    3.独享路由守卫

    独享路由守卫只有前置没有后置。 是某一个路由所独享的,名字叫 beforeEnter.

    是在配置路由时就写的。

    1. beforeEnter: (to, from, next) => {
    2. if (to.meta.isAuth) {
    3. if (localStorage.getItem('school') === '123') {
    4. next()
    5. } else {
    6. alert('localStorage值不对');
    7. }
    8. } else {
    9. next()
    10. }
    11. }

    4.组件内路由守卫

    是写在组件内的路由守卫,而不是写在路由的配置文件 router/index.js文件中的路由守卫。

    如果想给某个组件单独写一点逻辑,就用组件内路由守卫。

     离开组件时 beforeRouteLeave 时,也要放行,不然也离开不了。 next()

  • 相关阅读:
    当当网按关键字搜索dangdang商品 API
    Python武器库开发-flask篇之URL重定向(二十三)
    微服务技术栈之rabbitMQ高级(二)
    2023电工杯B题全保姆论文讲解手把手教程 人工智能影响评价
    如何使用HTML制作个人网站( web期末大作业)
    day20--Java集合03
    让代码帮我们写代码(一)
    SQLite Studio软件的安装及基本使用
    React-hooks【三】useCallback与useMemo详解,搭配Memo使用
    【C语言】开启一个线程
  • 原文地址:https://blog.csdn.net/weixin_47075145/article/details/127336962
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号