2013-11-28 25 views
1

我已經實現了WASLTPAAuthentication(帶有WASLTPALoginModule和Realm),它運行良好。
我可以打電話給我的JAX-RS,他們拿着cookie的身份。關閉應用程序後如何維護LTPA令牌?

我的問題是:當我點擊主頁按鈕並打開最近的應用程序的菜單來刷卡並退出應用程序,然後一旦我再次打開會話被銷燬,並且cookie丟失,我需要插入我的憑據並重新登錄。

是否有辦法防止這種情況?我需要以某種方式將cookie存儲在localStorage上嗎?

+0

只是爲了清楚起見,當你說「我可以調用我的JAX-RS並且他們通過cookie取得了身份」時,你的意思是你正在調用一個適配器來發出請求,而適配器是發送cookie的東西,對嗎? – jnortey

+0

不,我沒有嘗試將cookie放在某些適配器屬性中,我只是通過使用jQuery XHR調用進行$ .ajax()調用。 – Axel92Dev

回答

1

即使您的LTPA cookie仍然有效,當您關閉應用程序並且會話終止時,cookies仍然被清除。您需要將LTPA cookie保存在本地存儲中,然後手動設置該cookie,如果您希望它將其用於多個會話。

LTPA cookie包含在成功登錄到WASLTPARealm後返回的UserIdentity的屬性對象中,因此您應該已經有權訪問它。它只是保存和檢索它的問題。

+0

LTPA令牌位於response.responseJSON.userInfo的響應中。 .attributes.LtpaToken。您可以保存該應用程序並重新啓動應用程序後,在任何調用中將cookie明確設置爲$ .ajax()。但是從Worklight的角度來看,似乎沒有辦法使用令牌來登錄。提交登錄表單時,我沒有看到設置cookie的方法。我試過WL.Client.addGlobalHeader(「Cookie」,「LtpaToken =」+ value);和challengeHandler.submitLoginForm(「/ j_security_check」,{headers:{Cookie:「LtpaToken =」+ value}},並且都沒有導致發送到服務器的LtpaToken cookie –

+0

這是一個正確的觀察。 -cookie的角度來看,從本地存儲器中存儲和檢索cookie是可行的,但從Worklight的角度來看並非如此,一旦關閉了應用程序,會話就會被終止,用戶需要重新登錄。在這種情況下,不能使用LTPA令牌登錄到Worklight。如果您想進行某種自動登錄,則必須將用戶憑據保存在本地存儲中,然後在應用程序啓動時發送它們。 – jnortey