Oracle 顶点项目值

Oracle 顶点项目值,oracle,plsql,oracle-apex,Oracle,Plsql,Oracle Apex,编辑:我的问题可能不清楚。授权方案应该在登录页面之后离开页面 我正在创建一个具有自定义身份验证的Apex应用程序,我成功地创建了登录页面,现在可以设置会话项值。我创建了一个名为“会话\用户\角色”的apex应用程序项,在登录身份验证过程中,我使用以下命令将用户角色设置为会话状态: Apex_Util.Set_Session_State('SESSION_USER_ROLE', v_role); 使用我的一个用户帐户登录并检查会话应用程序项后,我可以确认在应用程序项和会话状态中正确设置了项值和项

编辑:我的问题可能不清楚。授权方案应该在登录页面之后离开页面

我正在创建一个具有自定义身份验证的Apex应用程序,我成功地创建了登录页面,现在可以设置会话项值。我创建了一个名为“会话\用户\角色”的apex应用程序项,在登录身份验证过程中,我使用以下命令将用户角色设置为会话状态:

Apex_Util.Set_Session_State('SESSION_USER_ROLE', v_role);
使用我的一个用户帐户登录并检查会话应用程序项后,我可以确认在应用程序项和会话状态中正确设置了项值和项名称

然而,当我试图通过使用返回布尔值的PL/SQL函数访问授权方案的“会话\用户\角色”项的值时,我似乎总是得到“false”,即使我应该得到“true”。这是我尝试用于授权目的的PL/SQL代码:

    DECLARE
         v_role VARCHAR2(200);
         v_auth boolean;
    BEGIN
         v_role :=  APEX_UTIL.FETCH_APP_ITEM('SESSION_USER_ROLE');
        --This is the value of the SESSION_USER_ROLE for this specific user
         if  v_role  = 'CEO' then 
              v_auth := true;
         else
              v_auth := false;
         end if;
         return v_auth;
    END;

我不明白我做错了什么。这不是检索会话用户角色的项值的正确方法吗?

请确保在当前身份验证方案的“身份验证后过程名称”属性中引用了设置应用程序项(在其中引用“登录身份验证过程”)的过程

或者,对应用程序进程使用身份验证后计算点

在新实例上,在用户登录之前,可能太早了

使用apex_debug.message添加一些检测,并在调试模式下运行该进程。 例如,您可能希望在身份验证过程中记录
v_role
的值,并在授权方案中获取该值后再次记录该值

您可能正确地获取了它,但它是否具有您期望的值?另一种参考方法是使用绑定变量语法,
:SESSION\u USER\u ROLE


另一方面,通过按权限而不是按业务角色定义授权方案,我取得了更大的成功。

我怀疑可能发生的情况是,您正在一个会话中设置应用程序项(在用户登录之前),然后尝试在另一个会话中检索它(一旦用户登录)。尝试将项的设置移动到“启动新会话”或类似的应用程序进程。最后一行可能就是我要查找的。我在哪里可以找到更多关于这方面的信息?这可能是我正在寻找的,但我不确定您所指的认证后应该调用哪个流程?抱歉,我不清楚。我会澄清我的回答。