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

Sam*_*ner 5 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;     
Run Code Online (Sandbox Code Playgroud)

Sco*_*ott 4

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

身份验证方案是您的应用程序的看门人。如果用户被允许进入,那么考虑他们是什么类型的用户。

您可以使用“授权方案”来执行此操作,根据您如何将他们识别为雇主或雇员来得出正确/错误。然后,您可以将这些授权方案关联到应用程序中的各种组件 - 页面、菜单项/链接、报告、按钮、.. 分支 - 您可以在应用程序的主页上定义这些组件。

例如:如果用户有授权方案x,则发送到页面2,否则发送到页面3。

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

您的示例代码还建议您存储明文密码。不要那样做。甚至不举个例子。散列密码应该是默认设置 - Dimitri Gielis在这里有一个关于如何设置自定义身份验证的好示例。

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

在此输入图像描述