我想在我的应用程序中创建自定义授权方案。 1.Admin 是isStaff 3.是会员
所以我创建了这些方案,我还在APEX_APPLICATION_PRIV(管理员,员工,成员)中创建了三个条目
现在通过访问控制页面,我可以为每个用户授予一个权限,但是如何将每个方案连接到其权限,因此具有授权方案isMember的页面只会出现给拥有该权限的成员?
答案 0 :(得分:0)
我想我对你为什么不使用你的ACL的默认(管理员,编辑,查看)感到困惑,而不是经历自定义的问题。
您无法像默认的ACL授权方案(管理员,编辑,查看)那样代表您的授权方案(管理员,员工,成员)。管理员 - 管理员,员工 - 编辑和成员 - 查看的位置。似乎痛苦少了很多。
Here is the oracle documentation.
编辑: 这是PL / SQL代码返回一个布尔值,用于默认授权方案' administrator'由ACL创建。
declare
l_setup_id number;
l_mode varchar2(50);
l_priv varchar2(50);
begin
if apex_application.is_custom_auth_page then
return true;
end if;
for c1 in (select id, application_mode
from apex_access_setup
where application_id = :app_id)
loop
l_setup_id := c1.id;
l_mode := c1.application_mode;
end loop;
if (l_mode = 'ALL') or (l_mode is null) then
return true;
end if;
for c1 in (select admin_privileges
from apex_access_control
where upper(admin_username) = upper(:app_user)
and setup_id = l_setup_id)
loop
l_priv := c1.admin_privileges;
end loop;
if nvl(l_priv,'x') = 'ADMIN' then return true; end if;
return false;
end;
在你的情况下,我想你可以直接替换“管理员”。与' isAdmin' (或者你在数据库中指定了它)。然后有额外的PL / SQL函数,适当地为工作人员和成员返回true或false。
我相信每个页面/项目只能有一个授权方案,所以请记住这一点。管理员能够访问具有编辑和查看权限的所有用户,默认授权方案可以解决此问题。具有编辑权限的用户可以访问具有查看权限的所有用户。最后,具有查看权限的用户只能访问具有查看权限的页面/项目(或未指定授权方案的页面)。