【发布时间】:2020-08-30 07:21:30
【问题描述】:
我想在 Oracle APEX 中创建多个用户,这样当他们登录时,他们只能查看和编辑他们在使用用户名登录时创建的报告和数据。管理员可以管理所有用户的所有数据,但用户只能管理自己的数据。在 APEX 中如何做到这一点?
【问题讨论】:
标签: oracle-apex
我想在 Oracle APEX 中创建多个用户,这样当他们登录时,他们只能查看和编辑他们在使用用户名登录时创建的报告和数据。管理员可以管理所有用户的所有数据,但用户只能管理自己的数据。在 APEX 中如何做到这一点?
【问题讨论】:
标签: oracle-apex
您可以在共享组件中创建一个应用程序项,并在您的身份验证方案中的身份验证后过程或身份验证后计算期间作为管理员时使用“Y”填充它。
然后在 where 子句中包含以下内容。
where (created_by = :APP_USER or :F_ADMIN = 'Y')
【讨论】:
首先,您需要能够确定用户是“最终用户”还是“管理员”。为此,我建议您使用自己的身份验证方案 (http://www.developapex.com/2018/04/custom-authentication-scheme-on-oracle.html),或者您可以调整我假设您正在使用的 APEX 访问控制。
最后一个选项更高级,您可以使用此链接开头:https://blogs.oracle.com/apex/custom-authentication-and-authorization-using-built-in-apex-access-control-a-how-to
一旦您可以识别用户的信息,您就可以修改您的 SQL 逻辑以添加一个 WHERE 子句,该子句将过滤以仅返回由特定用户创建的行(:APP_USER 返回当前用户) 或返回每一行(如果它是管理员)。正如@Scott 所说的那样。
【讨论】: