使用 URL 验证和访问 APEX 应用程序页面

Authenticating & Accessing APEX App page with URL

我有一个 APEX 应用程序,具有自定义身份验证方案。它有多个页面。一位用户登录到该应用程序后,他填写了调查问卷并希望将 URL 与一些技术 ID 一起发送给评估者。

URL 看起来像这样:

https://www.aaaaa.com/ords/f?p=APPID:PAGEID:SESSION::NO:RP,27:EVAL_ID:126676

任何拥有此 URL 的人都应该能够访问此页面,无需重定向到登录页面。评估者应该能够通过 URL 访问同一页面(问卷)并保存他的评论/更正。此页面要加载的内容将由属性 EVAL_ID 决定。加载此页面时,我会从我的数据库中检查 EVAL_ID 是否有效。如果有效,则显示基于 EVAL_ID 的页面/问题。 DB 中的所有问题都将分配一个评估者。最重要的是评估者不应被重定向到登录页面。他应该直接看到调查问卷,并且应该设置登录用户名cookie作为评估者。

换句话说,我需要使用自定义身份验证方案(用户 ID/密码)和 EVAL_ID 访问同一页面。非常感谢任何建议或指导。谢谢。

经过一番努力,自己搞定了。将其张贴在这里可能会对某人有所帮助。

  1. 在应用程序中新建一个 "public" 页面。在此页面中,执行以下操作。

  2. 创建一个"Before Header""Branch","Page or URL (Redirect)"到登录页面,服务器端条件为"No Rows Returned"和SQL查询验证针对我的数据库收到的 EVAL_ID。如果无效,则不会返回任何行并重定向到登录页面。

  3. 创建一个 "Before Header" "Process" 作为 "PL/SQL Code",使用以下代码设置用户 cookie,以防 EVAL_ID 有效。然后重定向到问卷页面。如果需要,您也可以在这里设置一些应用项目。

    声明 v_username varchar2(200); v_password varchar2(50); v_goto_page 整数;

    开始

    SELECT USER_EMAIL, PASSWORD
      INTO v_username, v_password
      FROM USERS_TABLE
     WHERE EVAL_ID = :eval_id;
    
    :GOTO_PAGE := v_goto_page;
    :APP_ITEM1 := 'aaaa';
    :APP_ITEM2 := 'bbbb';
    
    apex_authentication.send_login_username_cookie ( p_username => v_username, p_consent  => :P9999_REMEMBER = 'Y' );
    wwv_flow_custom_auth_std.login ( P_UNAME => v_username,
                                     P_PASSWORD => v_password,
                                     P_SESSION_ID => v('APP_SESSION'),
                                     P_FLOW_PAGE => :APP_ID || ':' || v_goto_page );
    

    结束;