使用 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 访问同一页面。非常感谢任何建议或指导。谢谢。
经过一番努力,自己搞定了。将其张贴在这里可能会对某人有所帮助。
在应用程序中新建一个 "public" 页面。在此页面中,执行以下操作。
创建一个"Before Header""Branch","Page or URL (Redirect)"到登录页面,服务器端条件为"No Rows Returned"和SQL查询验证针对我的数据库收到的 EVAL_ID。如果无效,则不会返回任何行并重定向到登录页面。
创建一个 "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 );
结束;
我有一个 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 访问同一页面。非常感谢任何建议或指导。谢谢。
经过一番努力,自己搞定了。将其张贴在这里可能会对某人有所帮助。
在应用程序中新建一个 "public" 页面。在此页面中,执行以下操作。
创建一个"Before Header""Branch","Page or URL (Redirect)"到登录页面,服务器端条件为"No Rows Returned"和SQL查询验证针对我的数据库收到的 EVAL_ID。如果无效,则不会返回任何行并重定向到登录页面。
创建一个 "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 );
结束;