移动 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",这都是通过您的挑战处理程序完成的。当一个请求被发送到受保护的适配器,并且登录模块过期时,您将收到为第一个请求发送的相同质询。
由您在代码中捕捉挑战(使用挑战处理程序)并向用户显示正确的登录提示。
我正在构建一个混合应用程序,我们在应用程序中遇到会话问题,我们在 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",这都是通过您的挑战处理程序完成的。当一个请求被发送到受保护的适配器,并且登录模块过期时,您将收到为第一个请求发送的相同质询。
由您在代码中捕捉挑战(使用挑战处理程序)并向用户显示正确的登录提示。