2011-10-09 94 views
8

如果登錄成功,我有一些PHP腳本可以登錄並返回帶有會話ID的JSON數組。用於跟蹤登錄會話的Android應用程序策略

在我的應用程序中,我想在首頁登錄並繼續瀏覽正在登錄的應用程序。我創建了一個單例類,它包含從JSON接收的會話ID(以及其他一些字段) PHP頁面。這個單例對象的字段「session_id」會根據用戶的操作進行檢查。

如果用戶想要註銷,那麼session_id只會被設置爲空,從而註銷。

我還使用HttpURLConnection的圖書館張貼的用戶名/密碼在登錄時。

這是處理這種情況一個足夠體面的做法?

+2

這也是我使用的方法,但我也對其他選擇感興趣。 –

回答

24

這裏有一些事情你應該想想:

  • 一旦你驗證過的用戶和本地存儲的SESSION_ID,發送SESSION_ID在每個HTTP請求的報頭。這樣,你不會發送每個請求的憑證,但會話ID。如果服務器端發生的事情發生在會話中,交易將不被允許。
  • 註銷時,不要只刪除應用程序(客戶端)端的session_id。發送一個註銷到服務器以及會話可以殺死服務器端。
  • 如果會話在服務器端被終止,您將需要執行以下兩項操作之一A)提示用戶重新登錄。 B)使用存儲憑證重新登錄,創建一個新的會話ID並將其存儲在您的單例中。

這樣可以保證更多的安全性和功能,而不僅僅是清除應用端的會話ID。

+1

我不認爲他做了任何更多的http請求,而不是初始登錄之一。他的大部分功能似乎都在本地。 +1提到正確的方式來進行身份驗證的請求。 –

0

這個策略可能會奏效。在我工作的應用程序中,我將來自登錄的返回數據存儲在android共享首選項中。如果用戶註銷,我清除了首選項。這允許用戶保持登錄狀態,即使他們關閉了應用程序並在稍後返回。我有一個身份驗證令牌,用於檢查用戶的登錄是否仍然有效。

您如何計劃處理持續登錄? sessionID是否過期?您可能想要考慮這些情況,否則一旦用戶登錄後,他們將永遠登錄或只要該應用程序處於打開狀態。

+0

@ Mike L需要您的幫助。我有一個web服務,其中有一個方法名稱generateToken。此Token方法用於該特定用戶的會話。當用戶登錄進來時,首先必須獲取該用戶的令牌在一段時間內令牌有效,並且用戶必須在第一次到期後獲得另一令牌。你能幫助我如何存儲會話令牌,即基於Cookie使用KSOAP 2 –