使用路由中的meta实现一部分网页不登陆就可以访问,而一部分网页必须要登录才可以访问。

   {
      path: '/Login',
      alias: '/',
      name: 'Login',
      component: () => import('@/views/Login.vue'),
      meta: { requiresAuth: false }
    },

要配合路由守卫使用

// 全局前置守卫
router.beforeEach((to, from) => {
  //路由元信息:判断是否需要登录验证
  if (!to.meta.requiresAuth) {
    return true;
  }
// 判断有没有token 如果没有的话就跳转登录页面
  let token = sessionStorage.token;
  if (token) {
    return true

  } else {
    console.log(to.fullPath)
    return { name: 'Login', query: { redirect: to.fullPath } };

  }
})

如果每个都写得话太麻烦  meta: { requiresAuth: true },设置之后不仅一级路由 /article设置了其children 二级路由 默认也是  meta: { requiresAuth: true } 比如去/article/tag就需要登录 ,但我给二级路由list单独设置了meta: { requiresAuth: false },那么就不需要登录也能跳转到/article/list这个页面。

 {
      path: '/article',
      name: 'Article',
      component: Layout,
      meta: { requiresAuth: true },
      children: [
        {
          path: 'list',
          name: 'ArticleList',
      meta: { requiresAuth: false },

          component: () => import('@/views/Article/List.vue'),
        },
        {
          path: 'comment',
          name: 'ArticleComment',
          component: () => import('@/views/Article/Comment.vue'),
        },
        {
          path: 'tag',
          name: 'ArticleTag',
          component: () => import('@/views/Article/Tag.vue'),
        },
        {
          path: 'listedit',
          name: 'ArticleListEdit',
          component: () => import('@/views/Article/ListEdit.vue'),
        },
        {
          path: 'release',
          name: 'ArticleRelease',
          component: () => import('@/views/Article/Release.vue'),
        },
      ]
    },

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
假设你的路由配置如下: ```javascript const routes = [ { path: '/', redirect: '/dashboard' }, { path: '/dashboard', component: Dashboard, meta: { // meta 定义需要的权限,1 表示普通管理员权限,2 表示超级管理员权限 permission: 1 } }, { path: '/users', component: Users, meta: { permission: 1 } }, { path: '/roles', component: Roles, meta: { permission: 1 } }, { path: '/settings', component: Settings, meta: { permission: 2 } }, { path: '/system', component: System, meta: { permission: 2 } } ] ``` 在路由配置,我们使用 `meta` 属性来定义需要的权限,其 `permission` 的值为 1 表示普通管理员权限,2 表示超级管理员权限。 接下来,在路由配置添加一个全局前置守卫,在每次导航之前检查用户权限。 ```javascript const router = createRouter({ history: createWebHistory(), routes }) router.beforeEach((to, from, next) => { const permission = to.meta.permission if (permission === 1) { // 普通管理员只能看到前三个路由 const allowRoutes = ['/dashboard', '/users', '/roles'] if (allowRoutes.includes(to.path)) { next() } else { next('/dashboard') } } else if (permission === 2) { // 超级管理员可以看到全部路由 next() } else { // 没有定义权限的默认为超级管理员权限 next() } }) ``` 在全局前置守卫,我们首先获取当前路由的权限,然后判断当前用户是否具有该权限。如果是普通管理员权限,只能看到前三个路由。如果超级管理员权限,则可以看到全部路由。如果没有定义权限,则默认为超级管理员权限。如果用户没有该权限,则跳转到默认的路由 `/dashboard`。 这样,就可以通过 `router.beforeEach` 实现路由权限控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值