【问题标题】:Oracle Apex 5.1 custom authorization scheme that only the user can view the data that is inserted on a tableOracle Apex 5.1 自定义授权方案,只有用户可以查看插入到表中的数据
【发布时间】:2018-02-06 14:21:19
【问题描述】:

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

示例 user1 和 user2 同桌

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

反之亦然

【问题讨论】:

    标签: oracle11g oracle-apex-5.1


    【解决方案1】:

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

    针对此要求的适当 Oracle 解决方案是 Virtual Private Database (VPD),它会在所有查询中强制执行您的规则,以限制用户可以看到哪些行。但是要使用它需要 Oracle 企业版。

    适用于任何版本的 Oracle 的简单方法是:

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

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

      和 e.created_by = :APP_USER

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 2021-05-07
      相关资源
      最近更新 更多