【发布时间】:2018-10-24 13:49:10
【问题描述】:
我想创建一个具有两种身份验证(短信和电子邮件)的用户屏幕 用户将首先收到电子邮件以验证并激活他的帐户。 之后他设置密码,他会收到短信消息来验证密码。我想在 Oracle apex 中执行此操作。我尝试过自定义身份验证,但我没有发现富有成效,任何人都有一些好主意来实现这一点。
【问题讨论】:
标签: oracle oracle-apex
我想创建一个具有两种身份验证(短信和电子邮件)的用户屏幕 用户将首先收到电子邮件以验证并激活他的帐户。 之后他设置密码,他会收到短信消息来验证密码。我想在 Oracle apex 中执行此操作。我尝试过自定义身份验证,但我没有发现富有成效,任何人都有一些好主意来实现这一点。
【问题讨论】:
标签: oracle oracle-apex
在您处理完电子邮件和短信验证后,您应该将该数据存储在数据库中并创建一个函数以用于您的自定义身份验证,以验证用户是否已通过验证。
把函数放到共享组件中->认证方案->设置->认证函数名
(该函数必须返回真或假才能允许登录)
【讨论】:
我不喜欢使用 SMS 进行双重身份验证,但如果你必须这样做,也许这可能会演示基于时间的一次性密码 (TOTP) 的实现,这可能会给你一些想法:https://github.com/fuzziebrain/orclapex-tfa-demo
我在这里也提供了一些背景信息:https://fuzziebrain.com/content/id/1718/
祝你好运!
【讨论】:
我在我的一个 APEX 项目中实现了这一点,但仅通过电子邮件实现。对于短信,我在另一种情况下使用它,但你仍然可以这样做。您将需要一个 smtp 服务器(您可以在您的服务器上运行一个),对于 sms,您将需要一个外部提供商。在您的 oracle 数据库中,创建一个名为 OTP(一次性密码)的表。
此表包含用户的外键。当用户创建帐户时,在 pl/sql 中运行一个动态操作,该操作将生成一个随机 6 位数字,该数字将在您的 OTP 表中加密。此动态操作还将使用 APEX_MAIL 向用户发送电子邮件。关于如何使用 APEX-MAIL 的完整文档是 here,它非常易于使用。您可以通过电子邮件向用户发送验证密码。
创建一个名为 user_na 的新会话用户(未经过身份验证)并使其在连接时,他能看到的唯一页面是一个带有文本字段的页面,用于输入他通过电子邮件收到的密码。在他输入之后,以与他创建帐户时相同的方式对其进行加密,并比较 OTP 表中的密码。如果它们匹配,请将他的帐户类型更改为用户,然后他将能够访问您为用户设置的每个页面。
如果您还想发送短信,我建议使用此tutorial。如果您想测试,短信提供商可以免费试用。如果您有任何问题,请不要犹豫,我可以轻松地为您提供帮助。
注意:如果您不想创建不同的 session_users,您可以在您的用户表中添加一个名为 authenticated 的列。默认设置为 0,输入邮箱密码时设置为 1。然后,当他登录时,检查这个值是 0 还是 1 以知道您应该将他重定向到哪个页面。
【讨论】: