Javascript angular应用程序的目录结构,用于角色实现

Javascript angular应用程序的目录结构,用于角色实现,javascript,c#,asp.net,angular,angular-material,Javascript,C#,Asp.net,Angular,Angular Material,如果我们必须实现三个角色,假设管理员、主管、用户,那么angular应用程序的最佳目录结构是什么。通常我们在功能目录中有包含功能模块的文件。但三个角色的情况可能不同,因为其中三个有不同的观点 谢谢根据这些信息,并且仅基于角色,您可以为每个角色创建文件夹,并通过Auth Guard管理所有内容 auth guard是一种角度路由保护,用于防止未经授权的用户访问受限制的路由,它通过实现允许保护决定是否可以使用canActivate()方法激活路由的接口来实现这一点。如果该方法返回true,则路由被激

如果我们必须实现三个角色,假设管理员、主管、用户,那么angular应用程序的最佳目录结构是什么。通常我们在功能目录中有包含功能模块的文件。但三个角色的情况可能不同,因为其中三个有不同的观点


谢谢

根据这些信息,并且仅基于角色,您可以为每个角色创建文件夹,并通过Auth Guard管理所有内容

auth guard是一种角度路由保护,用于防止未经授权的用户访问受限制的路由,它通过实现允许保护决定是否可以使用canActivate()方法激活路由的接口来实现这一点。如果该方法返回true,则路由被激活(允许继续),否则,如果该方法返回false,则路由被阻塞

auth guard使用身份验证服务检查用户是否已登录,如果他们已登录,则检查其角色是否有权访问请求的路由。如果他们已登录并获得授权,则canActivate()方法reutrns true,否则返回false并将用户重定向到登录页面


角路由防护装置连接到路由器配置中的路由,此身份验证防护装置在app.routing.ts中用于保护主页和管理页路由。

最好的方法是在app模块下制作3个模块(管理员、管理员、用户模块)。 并定义加载子模块的路由,如

var routes=[
  { path: 'user', canLoad: [ AuthGuard ], loadChildren: './user/user.module#UserModule' },
  { path: 'supervisor', canLoad: [ AuthGuard ], loadChildren: './supervisor/supervisor.module#SupervisorModule' },
  { path: 'admin', canLoad: [ AuthGuard ], loadChildren: './admin/admin.module#AdminModule' }
]
并定义AuthGuard和重写“CanLoad”函数。 在激活组件之前加载路由时调用该函数, 使用此功能,您可以检查用户是否可以进入此模块,并可以重定向到签名页面


因此,为每个权限制作独立的模块,并在auth guard上实现canLoad功能,就可以解决这个问题。

感谢您的详细阐述。。简而言之,我应该在feature目录下创建admin、supervisor和user目录,这是src目录下的标准目录,而对于共享服务,我会使用core目录,对吗?是的,这是一种方法。