Apex会话隔离

时间:2018-04-02 19:35:49

标签: oracle-apex oracle-apex-5 oracle-apex-5.1

我有这个问题:

我使用“APEX_CLONE_SESSION”在同一浏览器中拥有多个独立会话。它可以工作,但是当用户创建新的主会话时,所有其他以前的会话都已过期。

示例:我有一些初始页面在新会话中启动应用程序,在此页面中我有一个包含链接列的报表。此链接列以“APEX_CLONE_SESSION”开始新的表单页面会话。我可以做很多次这样的工作。所以,目前,我有初始页面报告和多个独立会话的表单页面。

当出于某种原因,用户在启动新初始页面的某个位置启动新的主会话时,问题就开始了。发生这种情况时,之前的所有会话都已过期。

在创建新的主会话时,是否仍然存在由“APEX_CLONE_SESSION”创建的会话?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

正如Joel Kallman在博客评论中所说,使用APEX_CLONE_SESSION创建的所有会话共享相同的cookie,因此当一个会话无效时,所有其他会话也会失效。

查看更多:http://joelkallman.blogspot.com.br/2016/07/apex-session-isolation-across-multiple.html

答案 1 :(得分:0)

目前我尝试这种方法来解决问题。

1 - 我创建一个只有一个公共页面的应用程序。此页面功能仅用于重定向到我的目标应用程序。

2 - 在我的目标应用程序的初始页面中,我使用localStorage存储由ape​​x生成的会话。

int res = 10;
String operand = "15";
String symbol = "+";
res = Operator.of(symbol).compute(res, operand);

3 - 在我的用户界面中,我定义了我的" HOME URL"作为我公共页面的网址。

4 - 此公共页面从localStorage获取会话的值并重定向到我的目标应用程序。

5 - 我将重定向到我的目标应用程序的代码放在公共页面的标题上,因此这个操作会在第一时间发生,并且用户看不到任何差异。

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