当我正在考虑使用这项技术时,我才刚刚开始浏览Oracle APEX教程。它非常全面,我正在开发人员页面中慢慢找到自己的方式。
一个直接跳出来的问题是如何保持用户数据隔离。首先,我正在构建一个简单的CRUD应用程序,我希望每个用户只能访问自己的数据。
使用APEX GUI界面是否可以实现?还是我必须立即进入PL / SQL?
谢谢
答案 0 :(得分:2)
那将是某种VPD(Virtual Private Database)。
什么是Oracle虚拟专用数据库?
Oracle虚拟专用数据库(VPD)使您可以创建安全性 在行和列级别控制数据库访问的策略。 本质上,Oracle虚拟专用数据库添加了动态WHERE 针对表,视图或表发出的SQL语句的子句 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),则可以使用其中存储的信息。