【问题标题】:Making a custom authentication based on 2 different types of users in apex在 apex 中基于 2 种不同类型的用户进行自定义身份验证
【发布时间】:2019-08-18 01:36:48
【问题描述】:

我有一个身份验证方案,目前只验证用户是否在一个表中,即雇主表。现在我希望这个身份验证方案来验证用户是雇主还是雇员,并且根据他们是雇主还是雇员,它应该将他们重定向到不同的页面。

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

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

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;     

【问题讨论】:

  • 您最好使用数字变量而不是字符串类型进行身份验证。例如标识号而不是 p_username。

标签: sql oracle oracle-apex


【解决方案1】:

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

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

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

eg: 如果用户有授权方案 x,则将 then 发送到第 2 页,否则将它们发送到第 3 页。

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

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

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

【讨论】:

  • 您好,感谢您的回复,我使用纯文本密码,因为我对 apex 基本上是全新的并且不知道如何加密密码。你有一个初学者友好的链接可以告诉我如何做到这一点?
  • 另外,如果我使授权方案起作用,发现者不会在屏幕左侧看到雇主导航栏。或者如果我将适当的机制放入其中,他们会看到它但无法访问它
  • 我认为这是一个很好的细分dgielis.blogspot.com/2017/08/… 但如果您打开自定义身份验证方案的属性帮助 - 身份验证函数名称,您也会得到一个示例
  • 您的菜单元素可以逐项列出谁有权访问,并且在页面级别您可以指定不同的列表来获取菜单。
猜你喜欢
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 2019-03-26
  • 2018-07-30
  • 2018-08-29
  • 1970-01-01
  • 2016-08-04
  • 2012-05-06
相关资源
最近更新 更多