15分钟后会话超时

时间:2014-05-28 10:10:54

标签: session mobile timeout oracle-adf

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

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

2 个答案:

答案 0 :(得分:1)

谢谢Shay Shmeltzer的回答。

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

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

  

为初始请求打开一个新会话,会话保持不变   对后续请求开放。 Relogin自动发生   (如果会话已关闭,则对用户透明)。 UsernameToken和   PasswordText必须作为SOAP标头包含在初始请求中   打开无国籍会议。

     

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

     

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

     

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

     

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

     

虽然会话是持久的,但每个会话都会进行身份验证   请求(SWSE解密用户名和密码   SessionToken)。

主要问题是:

  

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

在我的情况下,标准会话令牌的实时时间是15分钟。

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

答案 1 :(得分:0)

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