如何在oracle apex 5.1上创建一个像facebook一样的授权方案
示例user1和user2 同桌
user1使用他/她的帐户登录并插入数据 并可以查看数据 user2登录到他/她的帐户无法查看user1插入的数据
反之亦然
答案 0 :(得分:2)
APEX授权方案控制对APEX组件(如页面,区域,项目等)的访问,但不访问数据行。
适用于此要求的Oracle解决方案将是Virtual Private Database (VPD),它会在所有查询中强制执行限制用户可以查看的行的规则。但是,要使用它需要Oracle Enterprise Edition。
在任何版本的Oracle中都可以使用的简单方法是:
每个表都需要一个标有创建它的用户ID的列,例如CREATED_BY
。您可以使用数据库触发器来确保始终使用APEX用户名填充它。 (注意,VPD方法也需要此列。)
在每个报告查询中添加过滤器,例如:
和e.created_by =:APP_USER
当然,总会存在您忘记在某处添加过滤器的风险。避免这种情况的更好的解决方案是创建应用过滤器的视图,例如
create view apex_employees as
select * from employees
where created_by = (select v('APP_USER') from dual);
然后使用模式和授权来确保APEX只能看到视图,而不是表格。现在无需为每个报表查询添加过滤器。这种解决方案有时被称为“穷人”的VPD"