其他人提供了很好的答案和有效的建议,以避免隐藏元素,而是禁用它们并提供一些提示原因。
所以,我想从不同的角度来看待它——但是如何在用户不需要看到它们的情况下隐藏一些 UI 元素,无论他是否拥有与元素相关的特定操作的权限?
例如,假设某个角色的用户可以访问系统中的卖家记录。
但随后业务分析师说:“看,这种形式的卖家列表有一个下拉列表,我们不应该让某些特定角色看到它”。
开发者问:“所以,我们只是从这个角色中删除“阅读卖家”权限,对吧?但分析师回答:“不!这个角色应该仍然可以在卖家页面上查看卖家。只是这种单一的形式,我们应该隐藏一些角色的列表并显示给其他一些角色。”
因此,开发人员添加了名为“在表单 X 上显示卖家下拉菜单”的权限。
哎呀,现在我们有一个问题。对相同数据的访问由两个单独的权限控制。现在我们必须弄清楚如何将它们结合起来。如果有不止一种表格应该为某些角色隐藏卖家列表怎么办?我们如何将它与“阅读卖家列表”结合起来?对于我们开发人员来说,“读取”权限应该比“查看”具有更高的优先级,所以即使用户可以“查看”列表,他仍然不应该看到它(或者看到空或禁用有帮助提示)如果他没有“读取”权限。我们,系统的开发人员和分析师都知道这一点。但是系统管理员应该怎么知道呢?我们应该教他这个吗?我们如何保证管理员不会混淆所有那些“查看”和“阅读”
如您所见,这一切都变得混乱有一个原因 - 我们在角色权限列表中将数据处理权限与 UI 便利性混合在一起。
我已经看到许多项目变得混乱,因为服务器端的权限与 UI 耦合太多,这会带来麻烦和可能的安全漏洞(因为您的角色权限编辑器中有多个项目,用于对相同数据的相同操作) .
权限是关于对某些特定数据的访问和操作。UI 只能在整个系统中以一致的方式对权限做出反应(通过提示禁用、隐藏等)。我们不应该仅仅为了 UI 目的而发明新的权限条目。
现在问题仍然存在 - 但我们如何真正为某些系统用户隐藏 UI 元素,以避免大量始终禁用的项目使他们不堪重负?一种解决方案可能是角色工作区。如果我们清楚地知道某个角色的用户永远不需要访问某些特定数据,我们就会创建一组 UI 控制条目,类似于权限,但这次我们不称它们为权限。我们可以在这里变得非常花哨,甚至允许用户自己自由定制他们的工作空间并选择他们可以看到或看不到的内容。当然,权限始终占据最高优先级,但它只会影响 UI 元素的数据和状态,而不会影响可见性。
那是我的两分钱。不幸的是,我自己没有在这样一个系统上工作过,权限和 UI 工作区选项被巧妙地分开,因为当“损坏已经完成”时,我总是以某种方式来得太晚。但我希望有一天我会有机会。我只是希望找到一个很好的例子来正确地做到这一点,但不知何故,互联网搜索并没有给我任何有用的东西。这真的意味着没有其他人得出与我相同的结论吗?我不相信,企业设计模式世界中的某个人应该早就注意到这种 UI<-> 权限阻抗不匹配。