2013-04-11 142 views
2

如何讓用戶在Android應用中進行身份驗證後保持登錄狀態?我做了一些閱讀,坦率地說,他們對會話有一點缺乏經驗,但看起來好像在用戶將他們的憑證提交給服務器並進行身份驗證之後,服務器就會發回一個會話ID。我假設這個會話ID存儲在用戶的Android設備上。Android身份驗證和會話

我應該使用sharedPreferences,sqlite數據庫還是本地存儲來保存會話ID?我讀到共享首選項有點不安全,而sqlite數據庫或本地存儲將僅限於一個應用程序。

此外,我應該向服務器發送HTTP請求以發送/接收此信息,還是可以通過套接字連接完成此操作。最終,我想製作一款使用套接字的多人遊戲,但我認爲登錄等功能不一定必須通過套接字,不知道遊戲開發人員通常會採用何種標準或常規方式。

回答

0

我應該做一個HTTP請求到服務器發送/接收此信息

我不認爲你只是想通過HTTP發送您的身份驗證。潛在的人可能會攔截你的軟件包並以純文本的方式讀回數據。如果您的Android應用程序使用身份驗證服務器上的API,我建議使用HTTPS進行通信。

我應該使用sharedPreferences,sqlite數據庫還是本地存儲來保存會話ID?

我自己在'MODE_PRIVATE'中使用sharedPreferences來存儲ID。有不同的模式可以在其中創建sharedPreferences文件。私有模式意味着它只能被具有相同用戶ID的應用程序或應用程序訪問。所有的模式進行了說明:

http://developer.android.com/reference/android/content/Context.html#getSharedPreferences%28java.lang.String,%20int%29

如果你想存儲在Android設備上的密碼和用戶我會使用一個數據庫建議。請確保您有「鹽和胡椒」保護您的密碼:

http://barkingiguana.com/2009/08/03/securing-passwords-with-salt-pepper-and-rainbows/

不知道是否有一個標準或通常的方式,遊戲開發商通常這樣做

不能幫你與這個問題,但我認爲如果你做一些研究,你將能夠弄清楚;)。

+0

謝謝你的回覆。 HTTPS會更有意義,因爲它是加密的,我想我的問題更應該發送用戶登錄信息並通過套接字或https響應會話ID。我想它只要有一個安全的套接字連接就可以使用套接字。 – 2013-04-11 17:17:19