vue三种路由守卫详解
在Vue.js中,路由守卫主要用来对路由进行拦截,比如用户登录验证、权限校验等。Vue路由守卫主要有全局守卫、单个路由守卫、组件内的守卫。
1.全局前置守卫:router.beforeEach(to, from, next),对所有路由进行前置拦截。
router.beforeEach((to, from, next) => {
if(to.name !== 'Login' && !isLogin){
next({ name: 'Login' }); // 未登录,跳转到登录页
}else{
next(); // 已登录,继续
}
});
2.全局后置钩子:router.afterEach(to, from),对所有路由进行后置处理。
router.afterEach((to, from) => {
// ...
});
3.单个路由的守卫:在路由配置中定义beforeEnter。
const router = new VueRouter({
routes: [
{
path: '/protected',
component: Protected,
beforeEnter: (to, from, next) => {
if(isLogin){
next(); // 已登录,允许访问
}else{
next('/login'); // 未登录,跳转到登录页
}
}
}
]
});
4.组件内的守卫:通过路由导航守卫:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave。
export default {
beforeRouteEnter (to, from, next) {
// 在路由进入该组件的对应路由前调用
},
beforeRouteUpdate (to, from, next) {
// 在当前路由改变,但该组件被复用时调用
},
beforeRouteLeave (to, from, next) {
// 在路由离开该组件的对应路由时调用
}
}
以上就是Vue的三种路由守卫详解和实例代码。
评论已关闭