Логин пользователя из базы данных - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть приложение APEX, в котором мне нужно, чтобы пользователи (студенты) могли входить в систему и просматривать свою собственную информацию.У меня есть имена пользователей и пароли, хранящиеся в таблице в базе данных, которую я использую.

Есть ли способ использовать эти учетные данные для индивидуального входа в систему?и как мне поступить так?

Я очень плохо знаком с APEX, поэтому извините, если это простой вопрос.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Я бы использовал пользовательскую схему аутентификации.Это задокументировано, поэтому, если вам нужна помощь, просто нажмите на «?»кнопки рядом с различными полями.

Custom Authentication Scheme

Код примера, очевидно, не будет работать, поэтому, пожалуйста, не копируйте инаклеить вслепую.Адаптируйте его к вашей ситуации и, надеюсь, вы шифруете / хэшируете пароли.

Это позволяет начать работу с логином (аутентификацией).Далее, во второй части вашего вопроса, учащиеся должны видеть только «свою информацию» (авторизация).На этот вопрос нет однозначных ответов, так как есть много доступных стратегий и много вопросов для рассмотрения.Например, как вы разрабатываете свое приложение и схему данных, какие функции базы данных вам доступны, и какие нормативные соответствия вам необходимо соблюдать.

Можно найти отличную отправную точку для ознакомления с этими "функциями базы данных". здесь , о реальной безопасности приложений и виртуальной частной базе данных.

Альтернатива включает «расширение VPD для бедняков», которое Martin D'Souza писал давным-давно.

HTH!

0 голосов
/ 10 декабря 2018

Сказать, что каждый ученик должен видеть только свои собственные данные, означает - я предполагаю (как и о учениках ), что в вашем классе столько же пользователей баз данных (схем), сколько учеников.

Если это так, предполагая, что каждый из них будет использовать своего собственного разработчика Apex и его рабочее пространство (то есть они не будут совместно использовать рабочее пространство), я считаю, что вам придется создать столько разработчиков Apex и назначитьУ каждого разработчика своя схема.

Это должно быть сделано при подключении к внутренней рабочей области, вошедшей в систему как администратор Apex.

Однако , поскольку вам нужно создать много пользователей одновременно такой подход может быть утомительным.Вместо этого, поскольку у вас уже есть список пользователей, хранящихся в таблице, вы можете использовать процедуру APEX_UTIL.CREATE_USER и позволить ей выполнять грязную работу.

Например, если ваша таблица MY_USERS, тогда такой скриптбудет делать работу:

begin
  for cur_u in (select username, password from my_users) loop
    apex_util.create_user(p_user_name    => cur_u.username,
                          p_web_password => cur_u.password
                         );
  end loop;
end;

Для получения дополнительной информации читайте это: https://docs.oracle.com/database/apex-18.2/AEAPI/CREATE_USER-Procedure.htm#AEAPI114

...