首页 > temp > JavaScript教程 >
-
第九十五篇:vue-router的导航守卫
好家伙,考完期末考了.
恢复博客更新
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
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
出处:https://www.cnblogs.com/FatTiger4399/p/16425413.html