我应该将我的管理页面包含到 angular 项目中还是应该创建一个单独的页面?

Should I include my admin page into the angular project or should i create a seperate one?

嘿,我正在为我的 SpringBoot 应用程序开发前端。 我才刚刚开始学习 Angular。 如果我在同一个项目中创建我的管理页面,我不确定是否存在安全问题。

Admin- 和 User-Page 会共享很多代码,但其他任何人都不应访问管理操作(甚至数据)。

到目前为止我发现了什么: Should I create Two Angular projects for Admin and Users?

那么创建一个包含两个模块的 Angular 项目应该是正确的方法吗? 但我该如何处理呢? 或者我可以只构建一个具有身份验证和 admin/user 角色的单模块项目吗? 最佳做法是什么?

谢谢

我最近开发了一个项目,该项目有一组面向用户的页面和一组管理页面。

我构建项目的方式大致如下:

|- AppModule
|-- app components
|-- app services
|-- app routing
|
|- SharedModule
|-- components
|
|- AdminModule
|-- admin components
|-- admin services
|-- admin routing

AppModule 和 AdminModule 都导入 SharedModule。 AdminModule 是从我在 AppRouting 中的根管理路径延迟加载的,如下所示:

{
  path: 'admin',
  canLoad: [AdminGuardService],
  loadChildren: () => import('../modules/admin/admin.module').then(m => m.AdminModule)
}

其中 AdminGuardService 是一个路由守卫,用于检查当前用户是否具有管理员权限。

延迟加载模块的好处是它与 AppModule 分开编译,并且仅在我的管理路径被访问时由浏览器加载。我将所有特定于管理员的 http 调用保留在我的管理服务中,因此它们永远不会进入我的主应用程序包。

从安全角度来看,没有什么可以阻止非管理员用户猜测您的管理员 url,无论它是在同一个项目中还是在不同的项目中。我所有的后端授权都是由我的 API 完成的。因此,如果非管理员用户猜测管理员 url,他们将收到 401,我会将他们重定向回主应用程序。