我目前正在使用Oracle Application Express 5中的应用程序,更具体地说,我正在尝试创建自定义身份验证方案。
我首先在SQL命令窗口中创建一个函数,该函数将为我的应用程序提供基本级别的身份验证。我希望我的用户能够使用他们的个人学生参考编号(srn)和出生日期(dob)登录,这些信息来自表格"学生"。
create or replace function validate_user_from_db
(p_username in number, p_password in date)
return boolean
as v_pw_check varchar2(1);
begin select 'x' into v_pw_check
from student
where upper(srn) = upper(p_username)
and dob = p_password; apex_util.set_authentication_result(0);
return true; exception when no_data_found then apex_util.set_authentication_result(4);
return false;
end validate_user_from_db;
这个函数编译时没有错误,因此我继续创建一个简单的查询来测试函数。
declare
vresult varchar2(10);
begin
if validate_user_from_db ('30134852', '08/17/1997') then
DBMS_OUTPUT.PUT_LINE('Welcome Back');
else
DBMS_OUTPUT.PUT_LINE('Error');
end if;
end;
查询成功并正在输出"欢迎回来"何时填写正确的凭据。现在一切正常,我希望我开始创建一个新的身份验证方案。我将其命名为#34;用户验证"并将方案类型设置为自定义。
我一直在关注一个教程并研究认证方案,并建议在PL / SQL代码中放置一行,
return validate_user_from_db;
但是当我保存并编译它时,我收到了此错误消息。
为了尝试解决此问题,我决定在PL / SQL代码窗口中编写以下函数,并且编译时没有任何问题,但是当我尝试运行应用程序并使用正确的登录凭据时,它只会出现错误消息说明"无效的登录凭证"。
function validate_user_from_db
(p_username in number, p_password in date)
return boolean
as v_pw_check varchar2(1);
begin select 'x' into v_pw_check
from student
where upper(srn) = upper(p_username)
and dob = p_password; apex_util.set_authentication_result(0);
return true; exception when no_data_found then apex_util.set_authentication_result(4);
return false;
end validate_user_from_db;
我们非常感谢任何帮助,因为这是我第一次使用Oracle Apex创建身份验证。
答案 0 :(得分:0)
我在搞乱测试应用程序后解决了这个问题。根据您设置的身份验证方案,自动生成登录页面。确保在更改身份验证时删除现有登录页面。