Авторизация и пользовательские роли в Oracle Apex? - PullRequest
8 голосов
/ 26 октября 2011

Таким образом, у Apex есть «рабочие пространства», которые позволяют создавать пользователей трех типов - каждый из которых является внутренним по отношению к организации. Кроме того, похоже, что у разработчика отдельного сайта в Apex нет возможности иметь «пользователей» только для своего сайта.

Я что-то упустил?

Мне нужно, чтобы внешние (бизнес) пользователи могли получать доступ только к некоторым функциям сайта, например, бухгалтерский учет может видеть только страницы A и B, а руководители - A, B и C. .

Мне нужно иметь возможность иметь несколько групп людей с разной степенью доступа.

Может ли это быть сделано только путем создания рабочих пространств / групп? Или это можно сделать только на моем сайте?

Ответы [ 3 ]

8 голосов
/ 27 октября 2011

Я просто хочу остановиться на Ответ Тони , что само по себе правильно. Я просто хочу показать вам другой способ, который, я думаю, будет проще для начинающего, и в нем нет создания таблиц.

Если ваше приложение использует Apex в качестве схемы аутентификации, то вашими пользователями управляет администрация самого рабочего пространства. Вы можете создавать, редактировать и удалять пользователей, но вы также можете определять группы и связывать пользователей с группами. Можно создать несколько пользователей типа «конечный пользователь» и определить пару групп, например «Руководители».

Apex users and groups Creation of a group Когда вы создали свою группу, перейдите к пользователю, которому вы хотите назначить эту группу, и добавьте группу в группы этого пользователя

Adding a group to a user

Как только вы это настроите, вам все еще нужны схемы авторизации. Факт остается фактом: здесь вам нужны некоторые знания pl / sql, но возможно свести к минимуму кодирование благодаря некоторому удобному API-интерфейсу. Defining an authorization based on apex groups current_user_in_group делает то, что говорит: он проверяет текущего пользователя, назначена ли ему указанная группа. С некоторым расширением, используя несколько простых IF-структур, вы можете немного увеличить его!

Не то чтобы я полностью рекомендовал этот метод, я нахожу его немного утомительным, и вам нужно, чтобы кто-то пошел в APEX, чтобы фактически поддерживать пользователей и их группы, но вполне может быть, что это приемлемо в вашей среде. Вы можете использовать его, чтобы начать с однако. Вы можете очень легко отключить схемы аутентификации, и, изменив свои схемы авторизации, чтобы они соответствовали новой схеме аутентификации, вы можете легко и быстро настроить это позже. Конечно, это зависит от ваших приоритетов и целей.

8 голосов
/ 26 октября 2011

Хотя APEX имеет встроенную концепцию управления пользователями под названием «Группы», я должен признаться, что никогда не использовал ее, и быстрое изучение документации не дает мне понять, как вы используете их для управления доступом (но см. ответ Тома здесь)

Возможно, вам потребуется создать таблицы пользователей / ролей в вашей базе данных и использовать их вместе со схемами авторизации APEX для управления доступом к страницам. Можно создать единую схему авторизации типа «PL / SQL Function возвращающая логическое значение» с помощью тела функции:

return my_auth_pkg.is_authorized (p_user    => :app_user,
                                  p_app_id  => :app_id
                                  p_page_id => :app_page_id);

Затем вы реализуете пакет для поиска привилегий пользователя и решите, возвращать ли ИСТИНА или ЛОЖЬ для приложения и идентификатора страницы. enter image description here

В качестве альтернативы вы можете просто выполнить SQL для проверки доступа непосредственно в схеме авторизации: enter image description here

(NB "user_roles" и "role_pages" - это имена, которые я составил, чтобы представлять ваши таблицы)

0 голосов
/ 30 ноября 2017

Авторизация - это процесс определения, разрешено ли аутентифицированному / идентифицированному лицу получить доступ к ресурсу или выполнить операцию.Он основан на наборе привилегий или ролей, назначенных пользователю.Например, в базе данных Oracle администратор имеет право планировать задания, а пользователь - нет.Чем Авторизация отличается от Аутентификации?Часто Аутентификация и Авторизация работают вместе.Другими словами, Авторизация следует за Аутентификацией.Аутентификация определяет, кто ты?Авторизация определяет, что вам разрешено делать?

...