2014-03-26 20 views
1

我想知道流行的應用程序使用什麼方法。Android與Django:如何保持用戶登錄

這裏是我考慮的途徑:

  • 當,在共享偏好保存的用戶名&密碼,每 時間重新使用它(我認爲這會吸)用戶登錄
  • 通過 Facebook SDK在客戶端(應用程序)端登錄,將身份驗證令牌傳遞給應用程序並使用該 創建用戶。將令牌傳遞給應用程序,將此令牌存儲在手機上,並在未來的通信中使用它。 我認爲這將使 意義上定期重新創建此令牌,但如何在不需要 的情況下要求用戶再次登錄?
  • 創建一個登錄視圖。 這意味着要將用戶名和密碼傳遞給API然後使用用戶令牌。

回答

3

我不認爲你應該將用戶憑證存儲在首選項中。

最常見的方法是將憑據發送到服務器,然後作爲響應獲取會話密鑰。然後將會話密鑰作爲頭部添加到任何請求中(並在每個請求中對其進行驗證)。

如果會話密鑰將變爲無效(例如過期),則服務器應該返回適​​當的響應,並且客戶端應該初始化認證功能。

Egzample

首先運行

  1. 顯示登錄Activity
  2. 發送憑據,服務器
  3. 得到一個session_key作爲響應(通常它的哈希)
  4. 商店session_key哈希
  5. 用戶已通過身份驗證,退出登錄Activity

對服務器的任何請求。

  1. 添加與session_key頭你的請求(例如一個頭)
  2. 將請求發送
  3. 如果反應好的停止,否則(例如響應與消息 「未授權」 或狀態代碼401)運行First run
+0

關於客戶端初始化認證功能,在網絡應用程序,我認爲它會好起來的重定向用戶訪問登錄屏幕,但這在應用程序中並不能被接受。 那麼我怎麼去重新初始化而不要求用戶再次輸入細節呢? –

+0

你爲什麼認爲這是不可接受的?如果通過後端正確處理它會很有意義(例如,會話密鑰不會縮短到期時間) – aldorain

+0

事情是,我每天使用一次facebook或gmail應用程序,而且我從來沒有登錄過一再。他們遵循什麼策略? –

0

首先運行

  • 顯示登錄活動
  • 發送憑據,服務器
  • 得到一個session_key可以
  • 用戶進行身份驗證,退出登錄活動
  • 您將獲得訪問令牌和登錄詳細信息以存儲在共享首選項

對於其他請求。

  • 與session_key可以添加一個標題給您的要求(如如標題)
  • 將請求發送