一、概述
在项目开发中每一次路由的切换或者页面的刷新都需要判断用户是否已经登录,前端可以判断,后端也会进行判断的,我们前端最好也进行判断。
vue-router提供了导航钩子:全局前置导航钩子 beforeeach和全局后置导航钩子 aftereach,他们会在路由即将改变前和改变后进行触发。所以判断用户是否登录需要在beforeeach导航钩子中进行判断。
导航钩子有3个参数:
1、to:即将要进入的目标路由对象;
2、from:当前导航即将要离开的路由对象;
3、next :调用该方法后,才能进入下一个钩子函数(aftereach)。
next()//直接进to 所指路由
next(false) //中断当前路由
next(‘route’) //跳转指定路由
next(‘error’) //跳转错误路由
二、路由导航守卫实现登录拦截
这里用一个空白的vue项目来演示一下,主要有2个页面,分别是首页和登录。
访问首页时,必须要登录,否则跳转到登录页面。
新建一个空白的vue项目,在src\components创建login.vue
修改src\router\index.js
说明:
在每一个路由中,加入了meta。其中requiresauth字段,用来标识是否需要登录。
在router.beforeeach中,做了token判断,为空时,跳转到登录页面。
访问首页
http://localhost:8080
会跳转到
http://localhost:8080/login?redirect=%2f
效果如下:
打开f12,进入console,手动写入一个token
效果如下:
再次访问首页,就可以正常访问了。
打开application,删除local storage里面的值,右键,点击clear即可
刷新页面,就会跳转到登录页面。
怎么样,是不是很简单呢!
以上就是vue路由实现登录拦截的详细内容,更多关于vue 登录拦截的资料请关注www.887551.com其它相关文章!