我正在和其他 6 个人一起做一个 Angular 项目。该应用程序将能够处理 4 种类型的用户:“管理员”、“合作伙伴”、“学生”...
我注意到在构建 Angular 应用程序时,目标是模块化应用程序最重要的部分。例如,Class 模块、Exam 模块等。在这些模块中,使用 guards 管理对客户端视图的访问。
例如,学生和伙伴可以访问Class模块,但是如果您是Class模块中的PARTNER,则可以访问一些额外的课程。守卫用于管理对该网页的访问。
我的主要问题是:Angular 应用程序可以按角色模块化吗? 因此,您可以按角色进行模块化,而不是按 Class 模块、Exam 模块等进行模块化:Student 模块、Partner 模块、具有自己的路由模块的 Admin 模块。使用延迟加载,您只向用户发送他们需要的内容,然后使用 Node 服务器保护延迟加载。因为它生成一个 js 文件(23rwf234asd.js),我知道你可以实现安全性。
但是如果你按角色模块化,例如,admin.Module, Student.module, Partner.module...我这可能还是不受欢迎? 当用户登录时,你稍后向他们发送相应的.js 文件。也就是说,当您运行 ng build 命令时,Angular 会为配置为延迟加载的模块生成特定文件,例如 23ksf23ajd3asd.js。我的意思是,用户登录,然后您将他们重定向到他们相应的角色模块。
另外,我想解决我的这个疑问。我知道延迟加载用于通过只向用户发送他们需要的内容来提高 Web 应用程序的性能。
但是学习Angular,我发现如果用户没有相应的jwt,你也可以在运行ng build命令时阻止发送生成的js文件......你怎么看我说的最后这件事?也就是说,在 Angular 中,您将拥有一个 RESTful 服务,该服务将与相应的服务器通信以将数据从数据库传递给用户。如果你保护了延迟加载,你就可以保护 RESTful 服务......
例如,AdminModule 有它自己的 RestAdminService...它又包含 http://201.201.34.21:3000...那个 URL 只会被管理员知道。
用户必须登录才能知道使用哪个服务器从数据库中获取数据,而知道其他服务器的唯一方法是通过登录。
我的主要问题是:Angular 应用程序可以按角色模块化吗?
你有两种方式:
Directives
这里的概念是指令将检查您是否具有查看此组件的角色/权限(使用 api 请求或其他东西),如果没有,则指令必须删除/隐藏该组件。
(注意:同样可以使用ngIf
来实现)router-outlets
:通过为每个router-outlet
分配一个名称并在路由配置中指定插座名称。在stackoverflow另外,我想解决我的这个疑问。我知道延迟加载用于通过只向用户发送他们需要的内容来提高 Web 应用程序的性能。
但是学习Angular,我意识到你也可以阻止发送 如果用户运行 ng build 命令时生成的 js 文件 没有对应的jwt。。。最后这个怎么看 我在说什么?
AFAIK - 延迟加载模块中的任何组件都将在请求时发送到客户端,这意味着如果您在另一个模块(延迟加载)中声明的视图中有一个组件,该模块将被发送到客户端,这就是守卫在守卫返回之前阻止模块被调用
true