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

Oracle APEX自定义登录认证提示无效凭证如何解决?

Oracle APEX 自定义登录报"Invalid Login Credentials"排查方案
  • 第一步:校验MY_USERS表测试数据是否匹配查询条件
    打开APEX的SQL Workshop,执行如下查询,将<测试用户名>、<测试密码>替换为你实际输入的登录信息:

    SELECT * FROM MY_USERS 
    WHERE UPPER(username) = UPPER('<测试用户名>') 
    AND password = '<测试密码>' 
    AND status='Active';
    

    如果无数据返回,按以下顺序排查:

    • 检查status字段值是否为准确的Active,注意大小写、前后是否有多余空格
    • 检查password字段存储的值与输入内容是否完全一致,无大小写、字符差异
    • 检查username是否真实存在,无拼写错误
  • 第二步:修复认证函数的已知语法漏洞
    你当前的认证函数存在明显的变量长度不匹配问题:定义的lc_pwd_exit是长度为1的字符串类型,但查询返回的'Active'长度为6,赋值时会触发值过长错误,最终导致认证失败。直接修改函数的变量定义即可:

    -- 将原来的 lc_pwd_exit VARCHAR2 (1); 修改为
    lc_pwd_exit VARCHAR2 (10);
    

    修改完成后可以在SQL Workshop执行以下代码验证函数是否正常工作:

    DECLARE
        v_res BOOLEAN;
    BEGIN
        v_res := user_aut('<测试用户名>', '<测试密码>');
        DBMS_OUTPUT.PUT_LINE(CASE WHEN v_res THEN '认证通过' ELSE '认证不通过' END);
    END;
    /
    
  • 第三步:检查APEX认证方案配置
    进入应用后台「共享组件」→「认证方案」,确认以下配置:

    • 你当前启用的是自定义认证方案,而非默认的APEX账户认证
    • 认证函数名称填写正确,为user_aut,无拼写错误
    • 登录页的用户名、密码表单项名称与函数入参P_USERNAME、P_PASSWORD映射正确
  • 第四步:排查表权限问题
    确认APEX应用的解析Schema拥有MY_USERS表的查询权限,如果表创建在其他Schema下,需要在查询语句中加上Schema前缀,或创建公共同义词,否则查询不到数据会直接返回认证失败。

额外优化建议:你当前的建表语句给PASSWORD字段加了UNIQUE约束,会导致不同用户不能设置相同密码,不符合实际使用场景,建议后续去掉该约束;另外明文存储密码存在安全风险,推荐使用APEX自带的APEX_AUTHENTICATION.GET_HASH函数加密存储密码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:03