2017-01-08 27 views
0

私のアプリケーションでカスタム認可スキームを作成したいと考えています。 1. isAdmin 2. isStaff 3.内容isMemberoracle apexカスタム認可スキーム

ので、私はそれらのスキームを作成し、私も私が付与でき、アクセス制御ページから今APEX_APPLICATION_PRIV(管理者、スタッフ、メンバー)

に3つのエントリを作成しました権限スキームisMemberを持つページは、特権メンバーを持つ人だけに表示されるでしょうか?

答えて

0

私は、カスタムACLを持っているのではなく、あなたのACLにデフォルト(管理者、編集、ビュー)を使用するだけでは困惑していると思います。

デフォルトのACL承認方式(管理者、編集、ビュー)とまったく同じ認証スキーム(管理者、スタッフ、メンバー)を表すことはできませんでした。 Admin - 管理者、スタッフ編集、およびメンバービュー。多くの痛みを少なくするようだ。

Here is the oracle documentation.

編集:ここでは はACLによって作成されたデフォルトの認証スキーム「管理者」のために使用ブール値を返すPL/SQLコードです。あなたのケースでは

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」(またはただし、あなたのDBでそれを指定)と「ADMIN」を置き換えることができます想像してみてください。次に、追加のPL/SQLファンクションを適切に戻して、スタッフとメンバにtrueまたはfalseを返します。

ページ/アイテムごとに1つの認可スキームしかないと思いますので、これを念頭に置いてください。デフォルトの認可スキームは、管理者が編集権限と表示権限を持つすべてのユーザーにアクセスできるようにすることで、これを処理します。編集権限を持つユーザーは、表示権限を持つユーザーすべてにアクセスできます。最後に、表示権限を持つユーザーは、表示権限を持つページまたは項目(または権限体系が指定されていないページ)にしかアクセスできません。

関連する問題