【问题标题】:Showing custom view based on user role in angularjs在angularjs中显示基于用户角色的自定义视图
【发布时间】:2017-05-10 00:18:03
【问题描述】:
我想根据我的应用程序的用户显示不同的视图,例如,如果用户是 admin,他可以看到所有控件,或者当它充当 user 时,他只能看到控件和 UI 的子集他可以执行有限的动作。
我想到的一个解决方案是将角色信息与页面一起发送为JSON,但这需要我了解已登录的用户,所以基本上我可以先检查用户是否已登录或不通过cookie?如果没有,我可以只加载登录页面的轻量级版本,在用户登录后,我可以发送一个新页面,其中嵌入了用户的个人资料信息。
我看到的另一种方法是我可以引导我的 Angular 应用程序,然后检查登录状态,如果登录完成,然后通过 JSON 带来配置文件信息并更新视图,但我认为它会速度慢且容易出错。
我不知道什么是最好的/推荐的方法。
【问题讨论】:
标签:
angularjs
model-view-controller
web
user-experience
【解决方案1】:
第一种方法似乎是这两种方法中更好的方法。
第二种方法的问题是您正在向服务器发送 2 个请求 - 一个用于登录,第二个用于获取用户角色/个人资料。如果您选择这种方法,那么您可能会遇到一些问题,具体取决于您将如何实施它:
- 如果您在登录后更新您的 UI,那么您必须决定应该向用户显示什么,因为您还不知道用户配置文件。即使您提出了一些最低权限的 UI,也会有另一个请求来获取配置文件,这将再次刷新 UI - 2 次 UI 刷新可能会让用户感到烦恼。更不用说有 2 个请求会导致您的网站变慢。
- 如果您决定在登录后不更新 UI,但仅在您获得用户配置文件后,延迟仍然会更多,因为您将不得不等待 2 个单独请求的响应。慢速网络可能是一个主要问题(考虑移动)
如果您使用第一种方法,您将摆脱上述问题。