基于apex中2种不同类型的用户进行自定义身份验证

时间:2019-03-27 13:07:51

标签: sql oracle oracle-apex

我有一个身份验证方案,该方案目前仅验证用户是否在一个表(即“雇主”表)中。现在,我希望此身份验证方案可以验证用户是雇主还是雇员,并基于他们是雇主还是雇员,应将其重定向到其他页面。

首先,如何在身份验证脚本中包含第二个表?我最大的问题是,当员工登录时,我需要第二个应用程序链接到第一个应用程序吗?还可以怎么做?目前,我只有雇主登录时的雇主论坛和页面。如果员工登录,我将如何隐藏所有雇主报告/表格,只让他们看到员工表格/报告?

我当前的身份验证方案如下所示。

FUNCTION authenticate(p_username IN VARCHAR2
  ,p_password IN VARCHAR2) RETURN BOOLEAN IS
   l_value       NUMBER;
   l_returnvalue BOOLEAN;
 BEGIN
   BEGIN
     SELECT 1
       INTO l_value
       FROM employer
      WHERE 1 = 1
        AND upper(employer.username) = upper(p_username)
        AND upper(employer.passwords) = upper(p_password);
   EXCEPTION
     WHEN no_data_found
          OR too_many_rows THEN
       l_value := 0;
     WHEN OTHERS THEN
       l_value := 0;
   END;
   l_returnvalue := l_value = 1;
   RETURN l_returnvalue;
 END;     

1 个答案:

答案 0 :(得分:4)

这是一个“授权方案”问题,而不是“身份验证方案”问题。

身份验证方案是应用程序的关守。如果允许用户进入,请然后考虑他们是哪种类型的用户。

您可以使用“授权方案”来执行此操作,根据您将其识别为雇主还是雇员的方式得出对/错。然后,您可以将这些授权方案与应用程序中的各个组件相关联-页面,菜单项/链接,报告,按钮,..分支-您可以在应用程序的主页上定义它们。

例如:如果用户具有授权方案x,则将其发送至第2页,否则将其发送至第3页。

但是,如果您希望扩展此概念,建议您为功能定义授权方案,然后通过自定义表将这些功能分配给业务角色。然后,可以将业务角色(员工,雇主)与特定的pos相关联。

您的示例代码还建议您使用商店明文密码。 Don't do that。甚至没有例子。哈希密码应该是默认设置-Dimitri Gielis很好地说明了如何设置自定义身份验证here

和/或查看属性帮助中的示例:

enter image description here