【问题标题】:Client Side Template with view per role具有每个角色视图的客户端模板
【发布时间】:2012-10-11 08:28:20
【问题描述】:

我一直在阅读有关 AngularJS 的内容,它似乎很有希望,这是我唯一想弄清楚的,不是特定于框架,而是客户端模板通用。

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

【问题讨论】:

  • 为什么不能为每个角色使用不同的模板?
  • @dbaseman,例如,我正在为 EHR(电子健康记录)产品工作,医生可以查看所有患者信息,从详细的个人信息到过敏、药物、等等,其中例如,护士可能应该仅限于查看基本信息和过敏症,但正如您所见,两者都有共同点和时间浪费,,,
  • 只是想知道......也许你可以在服务器端根据角色确定的范围内重复一组可用项目

标签: javascript angularjs template-engine security-roles


【解决方案1】:

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

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

<div ng-include="'allergies.html'"></div>

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

<p>Allergy info: {{someData}}</p>

另一种选择是使用指令。

【讨论】:

    【解决方案2】:

    您将希望在服务器端过滤该医疗数据,然后在 Angular 中相应地显示。 ng-show 和 ng-hide 只是切换仍然存在于 DOM 中的元素的显示。换句话说,(我假设)受 HIPAA 保护的数据只是坐在那里,任何人都可以“查看源代码”。

    即使你确实想出了一种方法来彻底删除那些你不想根据角色显示的 DOM 元素,这没关系,因为你仍然在技术上转移了它数据发送给客户端,而精明的错误行为者会简单地嗅探数据包并获取受保护的数据。

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

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

    希望对你有帮助。

    【讨论】:

    • 感谢@blesh,但请记住,我从未说过我会将数据传输到客户端,我什至试图为客户显示模板,让他什么都看不到,,,
    • 我不想做任何假设。我只是想确保涵盖了重要的基础。 ;)
    猜你喜欢
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2023-01-03
    • 2015-02-11
    • 2011-08-02
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多