vue-router的访问权限管理

路由守卫(路由钩子、拦截器)
router" title="vue-router">vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。
可以不登录直接进入系统,但是访问指定位置需要登录
只有一级目录的情况下的拦截
import Vue from 'vue'import VueRouter from 'vue-router'
Vue.use(VueRouter)
const router = new Router({...});
# 需要登录才能访问/message路由,如果没有登录就调回到登录页面
router.beforeEach((to, from, next) => {
  let isLogin = false; // 默认没有登录
  if (!isLogin && to.path === '/message') {
    next('/login');
  } else {
    next();
  }
})
多级目录情况下的拦截
router.beforeEach((to, from, next) => {  let isLogin = false; // 默认没有登录
  let matched = to.matched.some((item) => {
    return item.path === '/message';
  })
  if (!isLogin && matched) {
    next('/login');
  } else {
    next();
  }
})
直接在路由中设置拦截
# 路由配置{
  path: '/message',
  meta: {
    login_required: false
  },
  component: Message,
  children: [
    {
      path: 'infos',
      component: MessageInfos
    }
  ]
}
# 拦截器配置
# 在单个路由中使用拦截
router.beforeEach((to, from, next) => {
  let isLogin = false; // 默认没有登录
  let matched = to.matched.some((item) => {
    return item.meta.login_required;
  })
  if (!isLogin && matched) {
    next('/login');
  } else {
    next();
  }
})
必须先登录才能进入系统
import Vue from 'vue'import VueRouter from 'vue-router'
Vue.use(VueRouter)
const router = new Router({...});
# 访问系统需要先登录
router.beforeEach((to, from, next) => {
  let isLogin = false; // 默认没有登录
  if (!isLogin && to.path !== '/login') {
    next('/login');
  } else {
    next();
  }
})
登录成功以后,不能访问登录、注册、找回密码页面
import Vue from 'vue'import VueRouter from 'vue-router'
Vue.use(VueRouter)
const router = new Router({...});
# 登录成功以后,不能访问登录、注册、找回密码页面
router.beforeEach((to, from, next) => {
  let isLogin = true; // 登录成功
  if (!isLogin && to.path !== '/login') {
    next('/login');
  } else {
    if(to.path === '/login'){
      next('/');
    } else {
      next();
    }
  }
})
以上是 vue-router的访问权限管理 的全部内容, 来源链接: utcz.com/z/378903.html








