Я добился этого в одном из моих проектов APEX, но только с помощью электронной почты.Для смс я использую это в другом контексте, но вы все равно можете это сделать.Вам понадобится SMTP-сервер (вы можете запустить его на своем сервере), а для смс вам понадобится внешний поставщик.В вашей базе данных Oracle создайте таблицу с именем OTP (одноразовый пароль).
Эта таблица содержит внешний ключ для пользователя.Когда пользователь создает учетную запись, запустите динамическое действие в pl / sql, которое сгенерирует случайное 6-значное число, которое будет зашифровано в вашей таблице OTP.Это динамическое действие также отправит пользователю электронное письмо с APEX_MAIL.Полная документация по использованию APEX-MAIL здесь , и она довольно проста в использовании.Вы можете отправить пользователю пароль для аутентификации через электронную почту.
Создайте нового пользователя сеанса с именем user_na (не прошедшего проверку подлинности) и сделайте так, чтобы при подключении единственной страницей, которую он мог видеть, была страница с текстовым полем для ввода пароля, который он получал по электронной почте.После того, как он введет его, зашифруйте его так же, как при создании учетной записи, и сравните пароль в таблице OTP.Если они совпадают, измените его тип учетной записи на пользователя, и тогда он сможет получить доступ к каждой странице, которую вы сделали доступной для пользователей.
Если вы также хотите отправить смс, я рекомендую использовать этот учебник .У провайдера смс есть бесплатная пробная версия, если вы хотите проверить.Если у вас есть какие-либо вопросы, не стесняйтесь их задавать, я могу легко помочь вам в этом.
ПРИМЕЧАНИЕ : если вы не хотите создавать разные session_users, вы можете просто добавить столбец вВаша пользовательская таблица с именем authenticated.Установите его в 0 по умолчанию и в 1, когда он вводит пароль электронной почты.Затем, когда он войдет в систему, проверьте, равно ли это значение 0 или 1, чтобы узнать, на какую страницу его следует перенаправить.