Oracle APEX密码验证返回错误值问题求助
Oracle APEX 当前密码验证异常问题排查
问题详情
- 为验证用户当前密码,创建了Oracle APEX验证,PL/SQL逻辑为查询用户表,比对输入密码与数据库中存储的哈希密码。
- 输入正确密码时,系统仍弹出「当前密码不正确」的错误提示。
- 将验证类型改为**Function Body (returning Error Text)**并调试代码后发现,代码中
old_pwd变量获取到的是新密码字段输入的ABC,而非当前密码字段的输入值。 - 页面提交后包含一个用于更新用户密码的处理流程。
排查与解决建议
- 核对页面项绑定名称
确认当前密码输入项的名称与验证代码中引用的old_pwd变量完全一致,避免因项名拼写错误导致变量错误获取新密码项的值。 - 调整验证执行顺序
检查验证的执行时机,确保验证在密码更新的处理流程之前执行,防止处理流程提前修改会话状态中的变量值。 - 添加会话状态调试
在验证代码中加入调试语句,输出相关页面项的会话状态值:
随后通过APEX调试工具查看日志,确认变量值的来源是否正确。apex_debug.message('当前密码项值: %', :P1_CURRENT_PWD); apex_debug.message('新密码项值: %', :P1_NEW_PWD); - 检查项的提交属性
确保当前密码输入项的「提交」属性设置为是,否则提交页面时该项的值不会被传入会话状态,导致验证代码无法获取正确输入。 - 确认哈希算法一致性
验证代码中使用的密码哈希算法,要与用户表存储密码时采用的算法、加密模式、密钥完全一致,避免因哈希结果不匹配导致验证失败。
内容的提问来源于stack exchange,提问作者codename_zoe
相关产品推荐
相关产品推荐

