客户端模板,包含每个角色的视图

mab*_*zer 4 javascript template-engine security-roles angularjs

我一直在阅读AngularJS,它似乎非常有前途,我唯一想弄清楚的,不是特定的框架,但它是客户端模板的一般.

假设您有一个具有多个角色的Web应用程序,每个角色可能包含附加功能,,,因此您不能为每个角色设置不同的模板,这被认为是不好的做法,所以我的问题是使用客户端的最佳方法是什么同时模板,不会将模板暴露给客户端,所以例如,AngularJS我不必使用ng-show?在服务器端生成模板的最佳工具是什么?

Ben*_*esh 6

您将要过滤该医疗数据服务器端,然后在Angular中进行相应显示.ng-show和ng-hide只是切换DOM中仍然存在的元素的显示.换句话说,那个(我假设)HIPAA保护的数据只是坐在那里任何人都可以"查看源"它.

即使您确实想出了一种方法来彻底删除那些您不希望根据角色显示的DOM元素,但这并不重要,因为您仍然在技术上将这些数据传输到客户端,并且一个精明的错误 - doer只会嗅探数据包并获取受保护的数据.

实际上,您的所有安全性和角色检查都应该在服务器上完成.在任何JS框架中,您都不能相信JavaScript应用程序在客户端上执行此操作,无论是否为Angular.

至于基于角色隐藏字段,(可能是因为你没有数据显示在这些字段中),ng-show或ng-hide将是你的朋友.偶尔ng-switch会这样做.如果您出于某种原因需要一个完全不同的模板,那么我会在每种情况下使用带有自定义指令的ng-switch,这样您就可以模拟每个角色下面的内容.

我希望有所帮助.


btf*_*ord 3

Blesh 关于仅向服务器端具有适当角色的用户提供数据的说法是正确的,但听起来您想重用客户端 UI 的各个部分。

在 AngularJS 中,您可以为不同的数据片段使用ng-include和构建不同的部分。所以你可以在“医生”和“护士”视图中写这样的内容:

<div ng-include="'allergies.html'"></div>
Run Code Online (Sandbox Code Playgroud)

然后有一个单独的 HTML 文件,名为allergies.html

<p>Allergy info: {{someData}}</p>
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用指令。