Как узнать, истек ли сеанс Oracle APEX - PullRequest
1 голос
/ 24 марта 2010

Короткая версия:

Если функция wwv_flow_custom_auth_std.is_session_valid (или apex_custom_auth_std.is_session_valid) возвращает TRUE, возможно ли, что сеанс истек, но еще жив? Если так, как вы можете проверить, истек ли сеанс?

Длинная версия:

Я создал систему единого входа для наших приложений Oracle APEX, примерно на основе этого руководства:

http://www.oracle.com/technology/oramag/oracle/09-may/o39security.html

Единственное отличие состоит в том, что мой основной вход в систему единого входа находится в Perl, а не в другом приложении APEX. Он устанавливает файл cookie единого входа, и приложение может проверить, является ли оно допустимым с помощью процедуры базы данных.

Я заметил, что когда я приезжаю утром, вся система не работает. Я перезагружаю страницу из приложения APEX, затем она отправляет меня на страницу единого входа, потому что сеанс истек, я вхожу в систему и возвращаюсь на свою исходную страницу приложения APEX. Это обычно работает, кроме первой вещи по утрам. Похоже, сессия APEX истекла. В этом случае кажется, что он находит сеанс, но затем отказывается его использовать и отправляет меня обратно на страницу входа.

Я старался изо всех сил отследить проблему. Функция "wwv_flow_custom_auth_std.is_session_valid" возвращает true, поэтому я предполагаю, что сеанс действителен. Но ничего не работает, пока я не удаляю куки сессии APEX. Тогда я могу легко войти обратно.

Кто-нибудь знает, есть ли другой вызов, который сообщит мне, истек ли сеанс или нет?

Спасибо

Ответы [ 2 ]

1 голос
/ 13 января 2014

Вы можете установить максимальную продолжительность сеанса в секундах на странице атрибутов безопасности приложения.

Апекс заявляет следующее:

"Длительность сеанса может быть заменена операцией задания, которое выполняется каждые восемь часов и удаляет сеансы старше 12 часов."

Вы можете использовать представление apex_040100.APEX_WORKSPACE_SESSIONS, чтобы определить, является ли сеанс действительным, основываясь на его существовании или времени создания. например: session_created - systdate > 12Hours.

Вам также следует использовать атрибут «Время ожидания сеанса напрямую по этому URL».

0 голосов
/ 17 апреля 2019

Это решение потребует привилегированного доступа, но вы можете запросить представление wwv_flow_sessions $ в вашей схеме Apex для любого сеанса, который соответствует вашему имени пользователя. Если ничего не существует, время вашего сеанса истекло. Это представление также дает вам поле 'idle_timeout_on', которое сообщит, когда ваш сеанс запланирован на время ожидания.

...