【问题标题】:Oracle APEX 18.1 GUIOracle APEX 18.1 图形用户界面
【发布时间】:2018-10-23 15:15:18
【问题描述】:

我刚刚开始浏览 Oracle APEX 教程,因为我正在考虑转向这项技术。它非常全面,我正在慢慢地在开发人员页面上找到自己的方式。

立即跳出来的一个问题是如何保持用户数据的隔离。首先,我正在构建一个简单的 CRUD 应用程序,我希望每个用户只能访问自己的数据。

这是否可以使用 APEX GUI 界面实现,还是我必须立即深入研究 PL/SQL?

谢谢

【问题讨论】:

标签: oracle oracle-apex


【解决方案1】:

那将是某种 VPD (Virtual Private Database)。

什么是 Oracle 虚拟专用数据库?

Oracle 虚拟专用数据库 (VPD) 使您能够创建安全性 在行和列级别控制数据库访问的策略。 本质上,Oracle 虚拟私有数据库添加了一个动态的 WHERE 对针对表、视图或 Oracle 虚拟私有数据库安全策略的同义词 已应用。

一种(相对)简单的方法是更改​​您的表,以便您知道哪些数据属于哪个用户 - Apex 提供等于当前登录用户的 :APP_USER 替换字符串:

alter table emp add app_user varchar2(30);

然后,您将手动向所有WHERE 子句(在交互式报告、经典报告中......)添加一个新的条件,例如

select empno, ename, job, sal
from emp
where deptno = :P1_DEPTNO
  -- add this to all queries
  and app_user = :APP_USER
  -- end of add this ...
order by ename;

您应该对所有桌子都这样做吗?不必要;如果您可以将这些表连接到包含“所有者”信息的表(例如,我上面提到的 EMP),您可以使用存储在其中的信息。

【讨论】:

  • 感谢您提供如此全面且内容丰富的答案。
猜你喜欢
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多