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

Oracle Apex 24.1:如何实现非凭证类自定义登录错误提示

问题解答

能否用认证后处理程序实现需求?

完全可以。认证后处理程序的执行时机是用户凭证验证通过后,刚好适合添加这类额外的准入校验逻辑。

最简洁实现方案

直接在pck_apex_auth_utils.post_login_proc中加入工作中心分配检查逻辑,一旦发现用户未分配工作中心,就主动登出用户、设置自定义错误消息,最后重定向回登录页。

具体代码修改

在你的存储过程里新增以下逻辑(保留原有计算应用项的代码):

declare
    v_count    number;
    v_username varchar2(100) := apex_auth.get_username; -- 直接获取当前登录用户,比绑定变量更可靠
begin
    -- 原有计算应用项的代码继续保留
    -- ...

    -- 检查用户是否分配了工作中心
    select count(1)
    into v_count
    from work_centres
    where username = v_username;

    if v_count = 0 then
        -- 登出已验证的用户
        apex_auth.logout(
            p_session_id => apex_application.g_instance,
            p_app_id     => apex_application.g_flow_id
        );
        
        -- 设置自定义错误消息,Apex登录页会自动用原生错误样式展示
        apex_util.set_custom_auth_status(
            p_status => '用户未分配工作中心,请联系管理员'
        );
        
        -- 重定向到当前应用的登录页
        apex_util.redirect_url(
            p_url => apex_application.login_url(p_app_id => apex_application.g_flow_id)
        );
        apex_application.stop_apex_engine; -- 终止后续流程,避免代码继续执行
    end if;
end;

错误提示区分说明

  • 凭证无效:由你配置的各认证方案(AD、Apex Accounts、自定义认证)自行处理,Apex会显示原生的无效凭证提示。
  • 未分配工作中心:通过上述代码设置的自定义消息,会以和原生错误完全一致的样式显示在登录页,用户能清晰区分两种失败原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:07:15