Session 15分钟后会话超时

Session 15分钟后会话超时,session,mobile,timeout,oracle-adf,Session,Mobile,Timeout,Oracle Adf,在我的应用程序中,我使用web服务获取所需信息。要实际使用此服务,您必须首先登录,获得令牌加密的密码,然后将此令牌附加到SOAP请求以标识当前用户。问题是,当您在15分钟内不使用服务时,您的令牌会发生变化,当您试图从服务器获取另一组信息时,它会拒绝旧令牌。结果,应用程序无法获取所需信息,并抛出大量错误 当令牌被更改时,如何将用户(load Login.axm)发送到登录页面?您可以通过编程设置从ADF Mobile发送到soap服务的soap头-谢谢您,Shay Shmeltzer的回答 我是如

在我的应用程序中,我使用web服务获取所需信息。要实际使用此服务,您必须首先登录,获得令牌加密的密码,然后将此令牌附加到SOAP请求以标识当前用户。问题是,当您在15分钟内不使用服务时,您的令牌会发生变化,当您试图从服务器获取另一组信息时,它会拒绝旧令牌。结果,应用程序无法获取所需信息,并抛出大量错误


当令牌被更改时,如何将用户(load Login.axm)发送到登录页面?

您可以通过编程设置从ADF Mobile发送到soap服务的soap头-

谢谢您,Shay Shmeltzer的回答

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

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

将为初始请求打开一个新会话,该会话将保持不变 为后续请求打开。重新登录自动发生 (对用户透明)如果会话已关闭。UsernameToken和 PasswordText必须作为SOAP头包含在初始请求中 打开无状态会话

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

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

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

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

尽管会话是持久的,但每个会话都会进行身份验证 请求(SWSE)从 SessionToken)

主要问题是:

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

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

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