我应该将我的管理页面包含在角度项目中,还是应该创建一个单独的页面?



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

管理员页面和用户页面将共享大量代码,但其他人不应访问管理员操作(甚至数据(。

到目前为止我发现的: 我应该为管理员和用户创建两个 Angular 项目吗?

因此,创建一个具有两个模块的 Angular 项目应该是正确的方法吗? 但是我该怎么做呢? 或者我可以只构建一个具有身份验证和管理员/用户角色的模块项目吗? 最佳做法是什么?

谢谢

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

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

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

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

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

其中,AdminGuardService 是检查当前用户是否具有管理员访问权限的路由保护。

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

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

相关内容

  • 没有找到相关文章

最新更新