当前位置: 首页 > 知识库问答 >
问题:

Vue路由器:基于用户角色加载路由

莫泓
2023-03-14

我希望使用相同的路由路径/dashboard,根据用户角色为我的用户加载稍微不同的视图。

以前,我已经加载了基于当前域的不同路由:

import MarketingSiteRoutes from './marketingSiteRoutes'
import DashboardRoutes from './dashboardRoutes'
import CampusRoutes from './campusRoutes'

Vue.use(VueRouter)

const host = window.location.host
const parts = host.split('.')

let routes

if (parts.length === 3) {
  const subdomain = parts[0]

  switch (subdomain) {
    case 'dashboard':
      routes = DashboardRoutes
      break
    case 'demo':
      routes = CampusRoutes
      break
    default:
  }
} else {
  routes = MarketingSiteRoutes
}

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router

这种方法只依赖于子域,子域在创建时可用,因此所有内容都可以是同步的。我必须对用户进行身份验证,根据其角色加载正确的路由,然后导出路由器以初始化vue应用程序。

理想情况下,我可以加载基于用户角色的... adminRoutes...父母路线...儿童路线,其中可以包含角色的所有路由定义。

我正在使用Feathers-vuex,但我似乎不能等待用户,然后导出路由器。有办法做到这一点吗?

共有1个答案

黄聪
2023-03-14

我将使用主仪表板组件来检查用户角色,然后显示正确的子组件。

<template>
  <div>
    <dashboard-admin v-if="isAdmin" />
    <dashboard-standard v-if="isStandard" />
  </div>
</template>

<script>
export default {
  data () {
    return {
      isAdmin: false,
      isStandard: false
    }
  },
  components: {
    DashboardAdmin: () => import('./DashboardAdmin.vue'),
    DashboardStandard: () => import('./DashboardStandard.vue')
  },
  created () {
    // Check user role and set one to true.
  }
}
</script>
 类似资料:
  • 我有一个小难题来解决这个问题。 我有一个用户和一个管理员角色。 用户应该能够列出除管理员以外的所有用户。管理员可以列出所有用户。 我想到的第一个解决方案是检查控制器级别的角色: 但是我更想做的是在路线层面上,保持控制器更干净,但不知何故它确实起作用了。它只列出用户,即使我作为管理员登录。 有什么建议吗?谢谢!

  • 我有应用程序,用户可以登录在不同的角色,例如。对于每个用户,我想在相同的路径上显示仪表板页面,例如。然而,每个用户将在不同的vue组件中定义不同的仪表板,例如。,和. 所以基本上,当用户打开vue应用程序应根据用户角色(我存储在vuex中)加载不同的组件。类似地,我希望其他路线也有这个。例如,当用户转到配置文件页面根据登录用户的不同,应用程序应显示不同的配置文件组件。 因此,我希望所有用户角色都有

  • 在我的Laravel 5.3设置中,我使用Bouner包,我定义了两个角色,和。登录后,客户将被重定向到,如在App\Http\Controller\Auth\LoginController.php下的中指定的。现在,如果具有角色的用户登录,他也会被重定向到,因为不会对用户角色进行任何区分。我在这里的目标是将管理员用户重定向到。 处理此问题的最佳解决方案是什么?这是我的尝试。 在路由中,在任何中间

  • 尽管我对Angular比较陌生,但它应该是如此简单以至于让我发疯。我使用带有“使用角度路由”选项的CLI创建了一个角度项目。创建了一个功能模块,并使用VS代码中的支架插件(Alexander Ivanichev的“Angular Files”)为其添加了一个路由类。一开始,我只是直接在app.component.html中添加组件选择器,它工作得很好,当我添加了路由器出口,将所有东西连在一起,并将

  • 我有一个带有路由器插座的根应用程序组件,并且路由是从家庭模块路由加载的,该路由在其子路由中使用延迟加载和 loadchildren。家庭组件中有一个路由器插座,在家庭的所有子模块中也有延迟加载的路由器插座。路由工作正常,但子路由也加载到根路由器出口中。例如:- 组件“testCreateComponent”正在加载localhost:4200 / test/create和localhost:420

  • 我有几个路线,每个路线装载3个组件。所有管线上的两个组件都相同。当我在这些路由之间移动时,我希望传递新数据,在组件的某个初始化事件上,我希望填充该组件的数据,以便它反映在UI上。我还想重新触发正在加载的组件的引导动画。我该怎么做呢。因为现在,我不知道在组件的生命周期中,我将在哪里获取数据,并使用这些新数据重新提交组件。具体来说,在myapps/1和/newapp/I中有一个主视图组件和一个侧栏组件