在Oracle Apex的登录页面中再添加一个参数

问题描述 投票:0回答:2

我想在Login页面中添加一个返回team_id的参数,但我无法对用户进行身份验证。以下函数是Oracle Apex身份验证方案中的默认函数,其中我将p_team添加为参数。

function my_authentication (
p_username in varchar2,
p_password in varchar2,
p_team in varchar2
)
return boolean
is
l_user ncr_emp.qlid%type := upper(p_username);
l_pwd  ncr_emp.pass%type;
l_team ncr_emp.team_id%type;

begin
select qlid  , pass , team_id
  into l_user, l_pwd, l_team
  from ncr_emp
 where upper(qlid) = upper(l_user) and upper(pass)=upper(p_password)
 and upper(team_id) = upper(l_team);

 return true;

  exception
  when NO_DATA_FOUND then return false;
  end;

当调用下面的函数时它显示错误:

apex_authentication.login(
p_username => :P9999_USERNAME,
p_password => :P9999_PASSWORD,
 p_team => :P9999_TEAM
);

错误:

ORA-06550:第1行,第64列:PLS-00306:调用'LOGIN'时参数的数量或类型错误

oracle oracle-apex oracle-apex-5 oracle-apex-5.1
2个回答
0
投票

在此处使用您的自定义验证功能

共享组件/验证方案/(选择当前)/设置/验证功能名称

并保留正常的顶点代码。请注意,您的自定义身份验证函数必须返回布尔值(true或false)。


0
投票

如果您定义方案类型“自定义”的身份验证方案,您将在身份验证功能名称内联帮助中注意以下内容。

此函数必须向调用它的登录过程返回一个布尔值。它有2个输入参数'p_username'和'p_password',可用于访问最终用户在登录页面上输入的值。

apex_authentication.login定义与您的尝试不符 - 您没有调用自己的函数。

安全模型真的需要接受'团队'吗?这对于建立身份至关重要,还是可以在登录后提名?

至于upper(pass),虽然它可能不是'最终代码',但它表明你是从后脚开始 - clear text passwords甚至不应该让它起草,恕我直言。

© www.soinside.com 2019 - 2024. All rights reserved.