根据我的客户要求,我必须在会话超时时实现自动注销。为了实现这一点,我在客户端创建了一个计时器,用于每分钟检查用户是否仍在进行身份验证。如果用户未经过身份验证,则显示消息并将用户路由回登录页面。
所以我设置我的应用程序是会话依赖模式。我更新了这样的worklight属性。
mfp.session.independent=false
mfp.attrStore.type=httpSession
serverSessionTimeout=10
我还更新了authenticationConfig.xml,其中我设置了expirationInSeconds正如本文所述(文档)https://www.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.dev.doc/devref/r_configuring_login_modules.html
<loginModule name="CustomLoginModule" expirationInSeconds="-1">
我读了几个其他线程,发现我每分钟都可以调用WL.Client.isUserAuthenticated(“MyReleam”)并检查用户是否仍然登录。这个方法存在问题,它不与服务器同步所以我们假设先调用WL.Client.updateUserInfo(),它会将用户身份与服务器同步,然后检查身份验证,但它带来了会话超时的另一个问题。如果我每分钟调用WL.Client.updateUserInfo(),它将会扩展我的会议。因此,如果我每分钟检查一次,基本上会话永远不会超时。
任何人都可以帮助我知道如何实现此功能?我应该使用哪种方法来检查用户是否仍然是身份验证或会话是否超时。
答案 0 :(得分:0)
我认为应用体验可以从不同的角度来看待 只需让会话超时值运行即可。
一旦达到会话超时,这意味着在客户端发送到服务器的下一个请求时,服务器将再次挑战应用程序。
为什么还要强迫应用程序人为地移动到登录屏幕?让服务器会话做它应该做的事情。
否则,完全不想“同步”。在应用程序上运行计时器 每当用户执行“操作”时,重置它。如果用户不执行任何操作,计时器将达到其目标,然后强制在客户端注销。