You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Apex按用户类型登录跳转出现重定向错误如何解决

问题根因

你将分支配置在第1页的Before Header阶段,且admin/zoneadmin类型用户的跳转目标仍然是第1页,每次第1页加载时都会触发分支逻辑,再次重定向到第1页,形成无限重定向循环,该问题和Cookie无关。

解决方案

方案1:给当前分支增加服务端执行条件

仅当需要跳转至其他页面时才触发分支,修改分支的「Server Side Condition」为以下表达式:

:SESSION_USER_TYPE = 'rider'

同时简化分支的PL/SQL代码,去掉admin用户的跳转逻辑,因为admin本来就留在第1页,不需要额外跳转:

declare
  myurl varchar2(255);
begin
  myurl := 'f?p=&APP_ID.:24:&SESSION.::::P24_ID:&SESSION_USER_ID.';
  return myurl;
end;

方案2:优化跳转逻辑,避免同页跳转

保留原有多用户类型跳转逻辑的前提下,增加当前页判断,只有目标页和当前页不一致时才返回跳转URL,否则返回NULL(返回NULL时Apex不会执行重定向):

declare
  target_page number := 1;
  myurl varchar2(255);
begin
  if :SESSION_USER_TYPE in ('admin', 'zoneadmin') then
     target_page := 1;
  elsif :SESSION_USER_TYPE in ('rider') then
     target_page := 24;
  end if;
  -- 仅当目标页不等于当前页时生成跳转URL
  if target_page != :APP_PAGE_ID then
    myurl := APEX_PAGE.GET_URL(
      p_page => target_page,
      p_items => 'P'||target_page||'_ID',
      p_values => :SESSION_USER_ID
    );
    return myurl;
  else
    -- 同页不跳转
    return null;
  end if;
end;

这里用原生函数APEX_PAGE.GET_URL代替硬编码的f?p格式URL,兼容性更好,也避免拼写错误。

方案3:将跳转逻辑移至登录页,仅登录后触发一次

如果你只需要在登录成功后跳转一次,不需要每次访问首页都判断跳转,直接把分支配置在登录页(默认是第9999页)的「After Login」处理阶段,这样只有登录成功时执行一次跳转,不会出现循环问题。

内容的提问来源于stack exchange,提问作者Ahmed Haroon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:36:03