我正在创建一个 Oracle Apex 应用程序。
我的问题:
该应用程序有两个方面;管理和用户。管理的目的是将用户分配给组。
用户应该只能访问信息 - 他们被分配的组。
例如; A 先生被分配到 A 组。B 先生被分配到 B 组。C 先生被分配到 A、B 和 C 组。
用户应该只被允许访问他们被分配到的区域,而不是管理控制。只有查看权限。
这可能吗?我发现 Oracle Apex 很难让我头脑清醒!
我正在创建一个 Oracle Apex 应用程序。
我的问题:
该应用程序有两个方面;管理和用户。管理的目的是将用户分配给组。
用户应该只能访问信息 - 他们被分配的组。
例如; A 先生被分配到 A 组。B 先生被分配到 B 组。C 先生被分配到 A、B 和 C 组。
用户应该只被允许访问他们被分配到的区域,而不是管理控制。只有查看权限。
这可能吗?我发现 Oracle Apex 很难让我头脑清醒!
您有许多要求,每个要求都可以在 Apex 中构建,但使用不同的功能:
管理员可以将用户分配到组。
只有管理员可以访问管理控制。
用户可以查看权限。
用户只能看到他们组的信息。
我会使用 Apex授权方案来处理 #1、#2 和 #3。例如,创建一个名为“Administrator”的授权方案,它检查当前用户是否是管理员,然后将此方案应用于任何页面、区域、按钮、项目等,这些页面、区域、按钮、项目等应该只有管理员可以访问。
对于#4,我能想到一些解决方案:
谓词 - 确保应用程序中的每个查询根据他们的组检查当前用户是否可以查看数据。
视图 - 将安全谓词封装在每个表的视图中,这样您就不必在整个应用程序中重复此代码。
Oracle VPD 或行级别安全性(需要企业许可证)——这将安全谓词隐藏在 SQL 级别之后。
我已将上述所有 3 个选项用于不同的项目;第三个是针对具有相当复杂的权限检查规则的相当大的应用程序。RLS 使这个项目更简单,更容易构建和验证;然而,在某些情况下,RLS 可能会过大。