移动 FirstHybrid 应用程序中的 Worklight 7.1 会话超时

Worklight 7.1 Session Timeout in mobile FirstHybrid application

我正在构建一个混合应用程序,我们在应用程序中遇到会话问题,我们在 worklight.properties 中定义了 1 分钟的会话 文件,现在一分钟后,如果我尝试调用适配器服务,它仍在工作,那么我如何在我的应用程序中维护会话,因为用户没有注销。同样在会话结束后,登录用户将如何重定向到登录页面?

这是我的worklight.properties条目

serverSessionTimeout=1

我的安全领域定义如下:

authenticationConfig.xml

<securityTests>

<mobileSecurityTest name="PushSecurityTest">
    <testAppAuthenticity />
    <testUser realm="AuthRealm" />
    <testDeviceId provisioningType="none" />
</mobileSecurityTest>

<customSecurityTest name="PushSecurityTestNew">
    <test realm="wl_antiXSRFRealm" />
    <test realm="wl_authenticityRealm" />
    <test realm="wl_remoteDisableRealm" />
    <test realm="wl_anonymousUserRealm" isInternalUserID="true" />
    <test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID="true" />
</customSecurityTest>

<customSecurityTest name="SubscribeServlet">
<test realm="SubscribeServlet" isInternalUserID="true"/>
</customSecurityTest>

</securityTests>
<realms>    
<realm loginModule="AuthLoginModule" name="AuthRealm">
<className>com.worklight.integration.auth.AdapterAuthenticator</className>
<parameter name="login-function" value="PushAdapter.onAuthRequired"/>
<parameter name="logout-function" value="PushAdapter.onLogout"/>
</realm>
<realm name="SubscribeServlet" loginModule="rejectAll">

 <className>com.worklight.core.auth.ext.HeaderAuthenticator</className>

</realm>
</realms>       


 <loginModules>
    <loginModule expirationInSeconds="-1" name="AuthLoginModule">
         <className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
    </loginModule>


  <loginModule name="requireLogin" expirationInSeconds="-1">

  <className>com.worklight.core.auth.ext.SingleIdentityLoginModule</className>

</loginModule>


 <loginModule name="rejectAll" expirationInSeconds="-1">

<className>com.worklight.core.auth.ext.RejectingLoginModule</className>

</loginModule>


</loginModules>

查询

会话超时如何工作以及用户如何在会话超时后重定向到登录页面?

默认情况下,MobileFirst Platform 7.1 使用名为 "session independent" 的模式。这意味着它根本不使用会话的概念,并且 serverSessionTimeout 的值不再相关。

相反,您应该查看每个 loginModule 的值 expirationInSeconds。每个登录模块都可以有自己的到期时间。试试 60 秒的值,看看它如何影响您的流量。

关于 "how user will redirect to login page",这都是通过您的挑战处理程序完成的。当一个请求被发送到受保护的适配器,并且登录模块过期时,您将收到为第一个请求发送的相同质询。

由您在代码中捕捉挑战(使用挑战处理程序)并向用户显示正确的登录提示。