【问题标题】:How to find if an Oracle APEX session is expired如何查找 Oracle APEX 会话是否已过期
【发布时间】:2010-03-24 18:01:06
【问题描述】:

短版:

如果函数 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

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

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

我已尽力追踪问题。 “wwv_flow_custom_auth_std.is_session_valid”函数返回真,所以我假设会话是有效的。但是在我删除 APEX 会话 cookie 之前没有任何效果。然后我就可以轻松重新登录了。

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

谢谢

【问题讨论】:

  • 对不起,我不知道 - 但感谢该链接 :)

标签: single-sign-on oracle-apex


【解决方案1】:

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

Apex 声明如下:

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

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

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

【讨论】:

  • 这可能是比回答更好的评论。
【解决方案2】:

此解决方案需要特权访问,但您可以在 apex 架构中查询 wwv_flow_sessions$ 视图以查找与您的用户名匹配的任何会话。如果不存在,则您的会话已超时。此视图还为您提供了一个字段“idle_timeout_on”,它将告诉您的会话何时计划超时。

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多