【问题标题】:How to separate admin and the front web in angular 2 project如何在 Angular 2 项目中分离管理员和前端网络
【发布时间】:2017-05-28 11:10:32
【问题描述】:

我将使用 Angular 2 构建一个完整的项目,该项目包含管理面板和一个供用户使用的前端 Web。

我不知道如何将管理员与网络分开,我应该为此使用路由吗?但这需要我导入app.module.ts 中的所有组件,或者还有另一种方法可以使用两个app.module.ts,一个用于网络,一个用于管理员?

或者我该怎么办?

【问题讨论】:

  • 您在寻找基于角色的应用程序吗?
  • admin 和 web 完全不同
  • 然后构建一个完全不同的网络应用程序。
  • 阐述完全不同的一个
  • 我不知道什么是最适合这种情况的,它是一个像 YouTube 这样的视频网站,我应该制作管理面板还是只使用一个 ui 并使用 ACL 制作一个项目?

标签: angular angular2-routing


【解决方案1】:

我最近构建了这个,我所做的只是将路线分成两个不同的模块。

所以你会有这个:

- +admin
  - routes
    - +dashboard
    - +login
    - ... etc
- +website
  - routes
    - +home
    - +profile
    - ... etc

那么你想要做的是使用canLoad 保护来防止在你没有被授权的情况下加载模块。这将保护前端的管理区域,以便除非您是具有该权限的管理员,否则代码不会暴露。

如果您不想将项目拆分为两个较小的项目,这是最简单的方法。我个人不会这样做,因为跨应用程序共享内容变得更加复杂。

编辑:

路由看起来像这样:

const routes: Routes = [
  {
    path: '',
    loadChildren: 'app/+website/website.module#WebsiteModule'
  },
  {
    path: 'admin',
    loadChildren: 'app/+admin-area/admin-area.module#AdminAreaModule'
  }
];

@NgModule({
  imports: [
    RouterModule.forRoot(routes)
  ],
  exports: [
    RouterModule,
    AppComponent
  ],
  declarations: [
    AppComponent
  ]
})

export class AppRouterModule {}

所以只需转到/admin 就会加载管理区域模块,该模块将有另一个路由器模块看起来像这样:

const routes: Routes = [
  {
    path: '',
    component: AdminAreaComponent,
    children: [
      {
        path: 'login',
        loadChildren: 'app/+admin-area/pages/+login/login.module#LoginModule'
      },
      {
        path: 'dashboard',
        loadChildren: 'app/+admin-area/pages/+dashboard/dashboard.module#DashboardModule',
        canLoad: [AuthGuardService]
      }
    ]
  }
];

@NgModule({
  imports: [
    ComponentsModule,
    SharedModule,
    RouterModule.forChild(routes)
  ],
  declarations: [
    AdminAreaComponent
  ]
})

export class AdminAreaRouterModule {}

在这里您可以看到/admin/dashboard 受到检查用户角色的守卫的保护。

【讨论】:

  • 如何使用路由更改模块?你能解释一下你是怎么做到的吗?
  • @MoustafaElkady 更新了答案。
  • 为什么将仪表板和登录作为模块而不是组件
  • 因为每个页面都应该是一个模块。这是最佳实践,还允许您延迟加载我在这里完成的模块。
  • 能否把 website.module && login.module 的全部内容加进去,因为我不知道会怎样
猜你喜欢
  • 1970-01-01
  • 2023-02-15
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
相关资源
最近更新 更多