Oracle Apex 5.1自定义授权方案,只有用户才能查看插入表中的数据

时间:2018-02-06 14:21:20

标签: oracle11g oracle-apex-5.1

如何在oracle apex 5.1上创建一个像facebook一样的授权方案

示例user1和user2 同桌

user1使用他/她的帐户登录并插入数据 并可以查看数据 user2登录到他/她的帐户无法查看user1插入的数据

反之亦然

1 个答案:

答案 0 :(得分:2)

APEX授权方案控制对APEX组件(如页面,区域,项目等)的访问,但访问数据行。

适用于此要求的Oracle解决方案将是Virtual Private Database (VPD),它会在所有查询中强制执行限制用户可以查看的行的规则。但是,要使用它需要Oracle Enterprise Edition。

在任何版本的Oracle中都可以使用的简单方法是:

  1. 每个表都需要一个标有创建它的用户ID的列,例如CREATED_BY。您可以使用数据库触发器来确保始终使用APEX用户名填充它。 (注意,VPD方法也需要此列。)

  2. 在每个报告查询中添加过滤器,例如:

    和e.created_by =:APP_USER

  3. 当然,总会存在您忘记在某处添加过滤器的风险。避免这种情况的更好的解决方案是创建应用过滤器的视图,例如

    create view apex_employees as
      select * from employees
      where created_by = (select v('APP_USER') from dual);
    

    然后使用模式和授权来确保APEX只能看到视图,而不是表格。现在无需为每个报表查询添加过滤器。这种解决方案有时被称为“穷人”的VPD"