Изоляция сеанса Apex

У меня такая проблема:

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

Пример: у меня есть начальная страница, которая запускает приложение в новом сеансе, на этой странице у меня есть отчет со столбцом ссылок. Этот столбец ссылок запускает новый сеанс страницы формы с APEX_CLONE_SESSION. Я могу делать это много раз и работает. Итак, на данный момент у меня есть отчет о начальной странице и несколько страниц формы с независимыми сеансами.

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

Есть ли способ сохранить сеансы, созданные «APEX_CLONE_SESSION», при создании нового основного сеанса?

Спасибо за помощь.


person romeuBraga    schedule 02.04.2018    source источник
comment
Определите, как пользователь запускает новый основной сеанс - это открытие URL без идентификатора сеанса?   -  person Scott    schedule 03.04.2018
comment
Да, Скотт, основной сеанс запускается, когда пользователь открывает URL-адрес без идентификатора сеанса.   -  person romeuBraga    schedule 03.04.2018
comment
Такое же поведение вы получите без использования сеанса клонирования. Вам нужно будет остановить пользователя, по крайней мере, от того, чтобы он мог делать это естественным образом в приложении.   -  person Scott    schedule 04.04.2018


Ответы (2)


Как говорит Джоэл Каллман в своем комментарии к сообщению в блоге, все сеансы, созданные с помощью APEX_CLONE_SESSION, используют один и тот же файл cookie, поэтому, когда один сеанс становится недействительным, все другие сеансы также становятся недействительными.

См. Больше: http://joelkallman.blogspot.com.br/2016/07/apex-session-isolation-across-multiple.html.

person Vih Damarques    schedule 03.04.2018
comment
Хорошо спасибо. Так что эта ошибка ожидаема. И нет способа решить или предотвратить такое использование приложения !? - person romeuBraga; 03.04.2018
comment
Я полагаю, что нет, поскольку файл cookie признан недействительным. Действительно ли необходимо использовать несколько сеансов в вашем приложении? - person Vih Damarques; 04.04.2018
comment
Это не большая проблема, я просто пытался найти шаблон, чтобы решить эту проблему. Но система все еще может быть такой. Такие случаи случаются нечасто. Спасибо за помощь. - person romeuBraga; 04.04.2018
comment
Вы решаете эту проблему, всегда включая идентификатор сеанса в ссылки, которые вы определяете для пользователя. - person Scott; 05.04.2018

На данный момент я пробую этот подход для решения проблемы.

1 - Я создаю одно приложение, чтобы иметь только одну публичную страницу. Эта функция страницы предназначена только для перенаправления в мое целевое приложение.

2 - На моей начальной странице моего целевого приложения я сохраняю сеанс, созданный apex с использованием localStorage.

localStorage.setItem('myappsession','&APP_SESSION.');

3 - В моем пользовательском интерфейсе я определяю свой «ДОМАШНИЙ URL» как URL-адрес моей общедоступной страницы.

4 - Эта общедоступная страница получает значение сеанса из localStorage и перенаправляет в мое целевое приложение.

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

<script>

var session = localStorage.getItem('myappsession');
if (session == null) {
    session = 0;
}

location.href = 'f?p=appalias:startpage:' + session;

</script>
person romeuBraga    schedule 06.04.2018
comment
Отличное решение. Я попробую нечто подобное. - person Ben Shumway; 08.02.2020