好家伙,考完期末考了.

恢复博客更新

1.什么是导航守卫?

“导航”表示路由正在发生变化

设置导航,就在切换过程中进行限制

 

”守卫“就好理解了

盯着你,不然你乱跑

 

所以我们大概可以知道,

这是一个控制路由访问权限的东西

2.导航守卫有什么用?

导航守卫可以控制路由的访问权限

比如说,

有人来到我的网页了,

我要求它登录后才能继续一系列的操作,

这个时候我可以设置一个导航守卫来强制

游客跳转到登录界面

2.全局前置守卫

每次发生路由的导航跳转时,都会触发全局前置守卫。

因此,在全局守卫中,程序员可以对每个路由进行访问权限的控制

2.1.前置守卫的设置

//为router实例对象,声明去哪聚前置导航守卫
//只要发生了路由的跳转,必然会触发该函数
router.beforeEach(function(to,from,next){
//to 是将要访问的路由的信息对象
//from 是将要离开的路由的信息对象
//next 是一个函数,调用next()表示放行,允许这次路由导航,守卫放行了
next()
})

(beforexxx,有点生命周期的感觉了)

2.2.三个参数的作用

function(to,from,next)有三个参数

to 是将要访问的路由的信息对象
from 是将要离开的路由的信息对象

next 是一个函数,调用next()表示放行,允许这次路由导航,守卫放行了

2.3.next()的三种调用方式

第一种情况:当前用户拥有后台主页的访问权限,直接放行:next()

第二种情况:当前用户没有后台主页的访问权限,强制其跳转到登录页面:next('/login')

第三种情况:当前用户没有后台主页的访问权限,不允许跳转到后台主页:next(false)

2.4.关于token

Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,
当第一次登录后,服务器生成一个Token便将此Token返回给客户端,
以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
 

2.5.配置路由守卫

来分析一波这玩意要怎么配置
 

1.要拿到用户将要访问的 hash 地址

2.判断 hash 地址是否等于/main。

2.1. 如果等于/main,证明需要登录之后,才能访问成功

2.2. 如果不等于/main,则不需要登录,直接放行 next()

3. 如果访问的地址是/main。则需要读取 localStorage 中的 token 值

3.1 如果有 token,则放行

3.2 如果没有 token,则强制跳转到/login 登录页

于是,

代码如下:

router.beforeEach(function(to,from,next){
//to 是将要访问的路由的信息对象
//from 是将要离开的路由的信息对象
//next 是一个函数,调用next()表示放行,允许这次路由导航,守卫放行了
if(to.path ==='/main'){
const token =localStorage.getItem('token')
//简单理解一下token是一个用来存储用户信息的加密字符串
if(token){
next()
}
else{
//没有登录,强制跳转
next('/login')
}
}
else{
next()
}
})

大概就这样了.

 

 

That's all

第九十五篇:vue-router的导航守卫的更多相关文章

  1. 第十五篇 Integration Services:SSIS参数

    本篇文章是Integration Services系列的第十五篇,详细内容请参考原文. 简介在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到S ...

  2. 【译】第十五篇 Integration Services:SSIS参数

    本篇文章是Integration Services系列的第十五篇,详细内容请参考原文. 简介在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到S ...

  3. 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)

    解剖SQLSERVER 第十五篇  SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...

  4. Python之路【第十五篇】:Web框架

    Python之路[第十五篇]:Web框架   Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 ...

  5. “全栈2019”Java第九十五章:方法中可以定义静态局部内部类吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. 跟我学SpringCloud | 第十五篇:微服务利剑之APM平台(一)Skywalking

    目录 SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking 1. Skywalking概述 2. Skywalking主要功能 3. Skywalking主要 ...

  7. Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)

    第十五篇(书中 6.1~6.9节 内容) 好的,昨天完成了第五章. 今天来看第六章. 总结重点: 1.如何对组件进行分组? 跟着做: 重点1:如何对组件进行分组? 首先,选中你想要组合的组件. 然后点 ...

  8. Vue Router的导航解析过程

    在我没读官方的vue router文档之前,我怎么也没想到路由的解析过程竟然有12步. 12步如下: 导航被触发. 在失活的组件里调用离开守卫beforeRouteLeave . 调用全局的 befo ...

  9. 淘宝(阿里百川)手机客户端开发日记第十五篇 JSON解析(四)

    解析一个从淘宝传递的JSON (大家如有兴趣可以测试下):{ "tae_item_detail_get_response": { "data": { " ...

随机推荐

  1. python基础中遇到的问题(TypeError: unhashable type: 'list')

    d20220330 #false >>> l=[{i:i+1} for i in [1,2,3]] >>> l [{1: 2}, {2: 3}, {3: 4}] & ...

  2. powershell命令总结

    2021-07-21 初稿 ps命令采用动词-名词的方式命名,不区分大小写.默认当前文件夹为当前路径./.除去-match使用正则表达式匹配外,其他都使用*和?通配符. 速查 管道命令 前一个的输出作 ...

  3. JS:相等判断

    1.=  赋值运算符 错误写法:a+b = c; 2.== :=== ==判断值是否相等 例: var a = 2; var b = 3; var c = a+b; var d = "2&q ...

  4. BUUCTF-秘密文件

    秘密文件 根据提示得知是属于文件被下载了,查看了下流量包直接过滤ftp包 这里看到有个RAR包存在,应该是隐写了 使用foremost分离即可 得到压缩包存在密码 默认四位纯数字爆破即可 flag{d ...

  5. nginx启动失败/报错(bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket...permissions) nginx启动失败

    出现这个问题是因为80端口被占用了 1.cmd输入命令netstat -aon|findstr "80" 2..查看80端口 16356对应的任务 输入命令 tasklist|fi ...

  6. 使用Runnable和Callable接口实现多线程的区别

    使用Runnable和Callable接口实现多线程的区别 先看两种实现方式的步骤: 1.实现Runnable接口 public class ThreadDemo{ public static voi ...

  7. MySQL查询为什么没走索引?这篇文章带你全面解析

    工作中,经常遇到这样的问题,我明明在MySQL表上面加了索引,为什么执行SQL查询的时候却没有用到索引? 同一条SQL有时候查询用到了索引,有时候却没用到索引,这是咋回事? 原因可能是索引失效了,失效 ...

  8. 本地使用 Docker Compose 与 Nestjs 快速构建基于 Dapr 的 Redis 发布/订阅分布式应用

    Dapr(分布式应用程序运行时)介绍 Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言 ...

  9. 【python】自动更新pu口袋校园活动

    [python]自动更新pu口袋校园活动 脚本目标: 1. 自动爬取pu口袋校园活动,筛选出需要的活动,此处我的筛选条件是线上活动,因为可以不用去就可以白嫖学时 2. 自动发送邮件到QQ邮箱,每次只发 ...

  10. 分布式事务(Seata)原理 详解篇,建议收藏

    前言 在之前的系列中,我们讲解了关于Seata基本介绍和实际应用,今天带来的这篇,就给大家分析一下Seata的源码是如何一步一步实现的.读源码的时候我们需要俯瞰起全貌,不要去扣一个一个的细节,这样我们 ...