【问题标题】:oracle apex custom authorization schemeoracle apex 自定义授权方案
【发布时间】:2017-01-08 17:18:27
【问题描述】:

我想在我的应用程序中创建自定义授权方案。 1. 是管理员 2. isStaff 3. 是会员

所以我创建了这些方案,并在 APEX_APPLICATION_PRIV(管理员、员工、成员)中创建了三个条目

现在通过访问控制页面我可以授予每个用户一个权限,但是如何将每个方案连接到它的权限,所以授权方案为 isMember 的页面只会出现给那些拥有权限的人?

【问题讨论】:

    标签: oracle plsql oracle-apex


    【解决方案1】:

    我想我有点困惑,为什么您不只是为您的 ACL 使用默认值(管理员、编辑、查看),而不是通过自定义的麻烦。

    您不能将您的授权方案(Admin、Staff、Member)完全表示为默认 ACL 授权方案(管理员、编辑、查看)。其中 Admin - 管理员、Staff - 编辑和 Member - 查看。似乎不那么痛苦了。

    Here is the oracle documentation.

    编辑: 这是返回布尔值的 PL/SQL 代码,该值用于 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;
    

    在您的情况下,我想您可以将“ADMIN”替换为“isAdmin”(或者您在数据库中指定它)。然后让额外的 PL/SQL 函数适当地为员工和成员返回 true 或 false。

    我相信每个页面/项目只能有一个授权方案,因此请记住这一点。默认授权方案通过管理员能够访问具有编辑和查看权限的用户可以访问的所有内容来解决此问题。具有编辑权限的用户可以访问具有查看权限的用户可以访问的所有内容。最后,具有查看权限的用户只能访问具有查看权限的页面/项目(或未指定授权方案的页面)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多