在Apex中,使用自定义登录时,可能会发现它覆盖了会话/cookie,导致用户在登录时无法跳转到预期的页面或进行操作。为了解决这个问题,可以使用以下代码示例:
DECLARE
l_url VARCHAR2(4000);
BEGIN
l_url := apex_util.prepare_url('f?p=' || :APP_ID || ':1:' ||
apex_util.get_session_id || ':::');
owa_cookie.send('LOGIN_USERNAME', :P101_USERNAME, path => l_url);
owa_cookie.send('LOGIN_PASSWORD', :P101_PASSWORD, path => l_url);
-- 以下示例代码用于设置自定义会话变量,可根据需求进行修改
apex_session.create_session(p_app_id => :APP_ID,
p_page_id => 2,
p_username => :P101_USERNAME);
EXCEPTION
WHEN OTHERS THEN
htp.p('Error: ' || SQLERRM);
END;
上述代码将使用owa_cookie.send方法在URL路径中发送登录用户名和密码的cookie以确保它们不被覆盖。此外,示例代码还包括创建自定义会话变量的方法,以便在自定义登录过程中存储和访问其他数据。通过这些修改,您应该能够使用自定义登录而不会覆盖会话/cookie。