【问题标题】:Session timeout after 15 minutes15 分钟后会话超时
【发布时间】:2014-05-28 10:10:53
【问题描述】:

在我的应用程序中,我使用 Web 服务来获取所需的信息。要实际使用此服务,您必须首先登录,获取令牌 - 加密密码,然后将此令牌附加到 SOAP 请求以识别当前用户。问题是,当您 15 分钟不使用服务时,您的令牌会更改,并且当您尝试从服务器获取另一组信息时,它会拒绝旧令牌。结果应用程序没有获得所需的信息并引发大量错误。

令牌更改后如何将用户(加载Login.axm)发送到登录页面?

【问题讨论】:

    标签: session mobile timeout oracle-adf


    【解决方案1】:

    谢谢你,Shay Shmeltzer 的回答。

    我是如何解决这个问题的:

    1) 首先,我阅读了会话在我的特定情况下是如何工作的。我使用了无状态会话,这意味着 -

    为初始请求打开一个新会话并且会话保持不变 为后续请求开放。自动重新登录 (对用户透明)如果会话关闭。用户名令牌和 PasswordText 必须作为 SOAP 标头包含在初始请求中 打开无状态会话。

    无状态会话管理是用于高负载的最佳方法 Web 服务应用程序。使用无状态模式,应用程序 只提供一次用户名和密码,即初始 要求。在服务器上打开一个会话并专用于此 用户。

    在 Siebel 业务应用程序返回 SessionToken 的响应中, 这是一个包含有关信息的加密字符串 用户名、密码和时间戳。对于后续请求 应用程序必须使用 SessionToken 才能重用会话。

    出于安全原因,会为每个响应重新生成 SessionToken。 应用程序必须提供最后收到的 SessionToken 下一个请求。

    SessionToken-Siebel 会话映射在 Siebel Web 中维护 服务器扩展(SWSE);基于 SWSE 发送的 SessionToken 值 对正确 Siebel 会话(任务)的请求。

    虽然会话是持久的,但每个会话都会进行身份验证 请求(SWSE 从 会话令牌)。

    主要问题是:

    注意:重新连接或再次自动登录仅在以下情况下才会发生 令牌尚未超时。如果超时,则用户必须 再次手动登录。令牌超时时间必须大于或等于 会话超时。有关会话令牌超时的更多信息,请参阅 会话和会话令牌超时相关参数。

    在我的例子中,标准会话令牌的存活时间是 15 分钟。

    这就是我在代码中包含计数器并在每次请求之前检查它的原因。如果计数器时间 > 15 分钟,我向服务器发送登录请求以获取新的会话令牌。原因,我没有在计数器超过 15 分钟后立即将当前页面更改为登录页面是:放置在代码中,我检查计数器是否已由绑定启动以获得渲染它所需的值,所以如果你的令牌有expired 你会得到一堆错误。这就是为什么我首先更新会话发送登录请求,获取活动会话令牌并将其放入绑定请求的最后一个请求中。应用程序在无任何错误的情况下呈现页面后,会弹出“会话已过期”消息并进入登录页面。

    【讨论】:

      【解决方案2】:

      您可以通过编程方式设置从 ADF Mobile 发送到您的 SOAP 服务的 soap 标头 - http://docs.oracle.com/cd/E37975_01/doc.111240/e24475/amxwebservices.htm#CHDIBIIE

      【讨论】:

        猜你喜欢
        • 2013-06-15
        • 2015-11-15
        • 1970-01-01
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 2014-10-24
        • 2017-09-26
        • 1970-01-01
        相关资源
        最近更新 更多