Значение элемента Apex - PullRequest
       8

Значение элемента Apex

0 голосов
/ 28 октября 2018

Редактировать: Я мог быть неясен с моим вопросом. Схема авторизации должна уходить со страницы после страницы входа.

Я создаю приложение Apex с настраиваемой аутентификацией, я успешно создал страницу входа в систему и теперь могу устанавливать значения элементов сеанса. Я создал элемент приложения apex под названием «SESSION_USER_ROLE» и в своей процедуре аутентификации при входе в систему я установил роль пользователя в состоянии сеанса с помощью:

Apex_Util.Set_Session_State('SESSION_USER_ROLE', v_role);

После входа в систему с одной из моих учетных записей пользователей и проверки элементов приложения сеанса я могу подтвердить, что значение элемента и имя элемента правильно установлены в элементах приложения и состоянии сеанса.

Однако, когда я пытаюсь получить доступ к значению элемента 'SESSION_USER_ROLE' для схемы авторизации, используя функцию PL / SQL, возвращающую логическое значение, я всегда получаю «ложь», даже когда мне нужно получить «истину». Это код PL / SQL, который я пытался использовать для авторизации:

    DECLARE
         v_role VARCHAR2(200);
         v_auth boolean;
    BEGIN
         v_role :=  APEX_UTIL.FETCH_APP_ITEM('SESSION_USER_ROLE');
        --This is the value of the SESSION_USER_ROLE for this specific user
         if  v_role  = 'CEO' then 
              v_auth := true;
         else
              v_auth := false;
         end if;
         return v_auth;
    END;

Я не понимаю, что я делаю здесь не так. Разве это не правильный способ получения значения элемента SESSION_USER_ROLE?

1 Ответ

0 голосов
/ 29 октября 2018

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

В качестве альтернативы, используйте ПослеТочка вычисления аутентификации для процессов приложения.

Computation point

В новом экземпляре будет слишком рано, прежде чем человек войдет в систему.

Добавьте несколькоинструментирование с использованием apex_debug.message и запуск процесса в режиме отладки.Например, вам может потребоваться записать значение v_role в процессе аутентификации и снова после извлечения его в Схеме авторизации.

Возможно, вы правильно выбираете его, но имеет ли оно значениевы ожидаете?Альтернативный эталонный метод с синтаксисом переменной привязки, :SESSION_USER_ROLE

Кстати, у меня более масштабный успех благодаря определению схем авторизации по привилегиям, а не по бизнес-ролям.

...