我正在开发一个新的 Angular2 应用程序,我想知道您将如何管理某些 Angular 色可访问的路由以及为某些 Angular 色创建、编辑和删除项目的权限。
我想知道你是如何解决这样的问题的:
您如何管理对某些 UI 元素的访问?应用程序如何知道显示或隐藏它?您为此使用单一服务吗?或者您是否为应用中的不同位置创建了不同的条件?
您如何管理路线?你使用 CanActivate、CanActivateChild、CanLoad 等吗?您是为所有路由构建单一的守卫服务,还是为不同的模块或组件提供不同的服务?
最后一个问题。划分应用程序然后可以像 CMS 一样出售它的最佳方法是什么?我的意思是我们如何实现从市场加载其他模块并将其添加到您的应用程序中的可能性?
你是如何解决类似问题的?
非常感谢任何指导、经验或指向涵盖这些主题的 Material 的指示。提前致谢。
最佳答案
正如在对您的问题的评论中提到的,完整的答案超出了 SO 问题/答案的范围,因此您可能会因此在不久的将来发现您的问题已关闭,但这里有一些快速建议供您引用自己进一步探索:
在通过 http/https 登录期间/之后从服务器获取用户权限。将这些权限存储在对您的应用有意义的地方,可能在服务中。如果您使用的是 JWT,则可以在 JWT token 中返回权限。
为了简化事情,只处理客户端的权限。 Angular 色用于服务器代码确定用户具有什么权限。无需通过将 Angular 色与客户端权限混为一谈来搞砸事情。
使用 auth guards 保护路由
使用 *ngIf 或 ngSwitch/*ngSwitchCase 保护单个 UI 元素
动态加载是一个很大的主题领域 - 去阅读它 - 网络上有很多资源。然而,据我所知,虽然您可以延迟加载模块,但应用程序必须在编译时知道它们。我可能错了,但我不认为你可以在运行时加载任何你想要的东西。
关于angular - 您将如何使用 Angular 2 管理用户角色和权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46595234/