2016-03-17 52 views
0

根據我的客戶要求,我必須實現會話超時自動註銷。爲了實現這個,我在客戶端創建了一個定時器,每分鐘檢查用戶是否仍然通過身份驗證。如果用戶未通過身份驗證,則顯示消息並將用戶路由回登錄頁面。Mobilefirst 7.1 - 問題與WL.Client.updateUserInfo()和會話超時

所以我設置我的應用程序是會話相關模式。我已經更新了這樣的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

謝謝Idan。我會考慮這個解決方案。 –