Apex Oracle: Как открыть страницу publi c, используя другой сеанс? - PullRequest
2 голосов
/ 05 марта 2020

У меня есть приложение publi c Apex, и мне нужна определенная страница c, чтобы открыть ее в другом сеансе. Не используйте тот же сеанс, что и остальная часть приложения.

В основном я имею в Chrome

  • Tab1: страница A, которая требует аутентификации
  • Tab2: страница B, которая публикуется c

Мне нужно, чтобы обе страницы запускались в двух разных сеансах.

На уровне страницы B я установил "Rejoin Sessions" в Отключено

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

Я с использованием схемы аутентификации с совместным использованием сеансов:

enter image description here

Кто-нибудь знает, как решить эту проблему, пожалуйста?

Спасибо, Ура,

1 Ответ

3 голосов
/ 05 марта 2020

Причина, по которой он убивает ваш сеанс со страницы A, заключается в том, что на стороне клиента сеансы реализуются с использованием файлов cookie. И страница A, и страница B пытаются использовать один и тот же повар сеанса ie с разными идентификаторами сеансов, поэтому, если один из них записывает его в последнее время, тот убивает другой.

Если вы просматриваете файлы cookie с помощью браузера Инструменты разработчика F12, вы должны увидеть один из них:

Name                  Value                          Domain          Path
ORA_WWV_APP_115305    ORA_WWV_FMN08hWNhlkjRDOIU_y    yoursite.com    /pls/apex    (etc)

Это сессия Cook ie для APP ID 115305, и браузер будет отправлять его вместе с каждым HTTP-запросом на yoursite.com/pls/apex. Apex использует Value, чтобы убедиться, что вам разрешен доступ к сеансу, указанному в вашем URL-адресе. Если вы измените идентификатор повара ie или идентификатор сеанса URL, ваш сеанс будет потерян, и Apex создаст для вас новый.

Таким образом, Name + Domain + Path образует здесь своего рода уникальный ключ. Вы можете иметь только один сеанс для каждого уникального имени + домена + пути приготовления ie.

Я думаю, что самое простое решение здесь - это поместить вашу публикуемую c страницу B в отдельное приложение Apex . Таким образом, у него будет свой сеанс повара ie с другим именем.

(Таким образом, Oracle App Builder, который также является приложением Apex, может одновременно запускать отдельный сеанс без прерывания сеанса вашего приложения. Его файлы cookie используют имя, подобное ORA_WWV_USER_9872)

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

Похоже, вы настроили собственную схему аутентификации, поэтому я думаю, что ваш повар ie будет выглядеть так:

Name                  Value                          Domain          Path
SESSIONCOOKIE         ORA_WWV_FMN08hWNhlkjRDOIU_y    yoursite.com    /    (etc)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...