首页 文章

如何查找Oracle APEX会话是否已过期

提问于
浏览
1

Short version:

如果函数wwv_flow_custom_auth_std.is_session_valid(或apex_custom_auth_std.is_session_valid)返回TRUE,会话是否可能已过期但仍然存在?如果是,您如何检查会话是否过期?

Long version:

我已经为我们的Oracle APEX应用程序创建了一个单点登录系统,大致基于本教程:

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

唯一的区别是我的主SSO登录是在Perl中,而不是另一个APEX应用程序 . 它设置了一个SSO cookie,应用程序可以检查它是否对数据库过程有效 .

我注意到,当我早上到达时,整个系统都不起作用 . 我从APEX应用程序重新加载页面,然后它将我发送到SSO页面,因为会话已过期,我登录,并被重定向回我原来的APEX应用程序页面 . 这通常是有效的,除了早上的第一件事 . 看来APEX Session 已经过期了 . 在这种情况下,它似乎找到了会话,但后来拒绝使用它,并将我发送回登录页面 .

我已尽力追查问题 . “wwv_flow_custom_auth_std.is_session_valid”函数返回true,所以我假设会话有效 . 但是在我删除APEX会话cookie之前没有任何作用 . 然后我可以轻松地重新登录 .

有人知道是否有另一个电话会告诉我会话是否过期?

谢谢

1 回答

  • 1

    您可以在应用程序安全属性页面下设置最大会话长度(以秒为单位) .

    Apex声明如下:

    “会话持续时间可能被每8小时运行的作业操作所取代,这会删除超过12小时的会话 . ”

    您可以使用视图 apex_040100.APEX_WORKSPACE_SESSIONS 根据其存在或创建时间确定会话是否有效 . 例如: session_created - systdate > 12Hours .

    您还应该使用“会话超时直接到此URL”属性 .

相关问题